如何将多个字符串相加,例如“123”+“456”?

How to add several string together such as "123"+"456"?

如何实现这样的操作,Visual Studio老是告诉我不对
错误代码是 C2110E2140.
有人可以帮忙吗?

std::string a = "2323" + "22323" + "232332";

const char[X] 没有预定义的 operator+(char 的常量数组,X 是其中的字符数;例如 const char[5] 是文字类型 "2323" 就像在你的代码中一样) - 也不是 const char *,它们可以自动转换成。这就是 C++ 编译器不允许您这样做的原因。 但是,有一个operator+ for std::string。由于此运算符又 returns 一个字符串,因此您可以链式调用,即对其结果再次调用 + 运算符。 所以你可以这样写:

std::string a = std::string("2323") + "22323" + "232332";

如果您已经在使用 C++14 或更高版本,您可以通过 s 后缀使用字符串类型的文字,那么另一种写法是

using namespace std::string_literals;
std::string a = "2323"s + "22323" + "232332";

如果只是多个const char[X]字面量要拼接,也可以一个接一个写,像这样:

std::string a("2323" "22323" "232332");
// or:
std::string a = "2323" "22323" "232332";

编译器会自动为您连接它们。

在此声明中

std::string a="2323" + "22323" + "232332";

您正在使用带有字符串文字和运算符 + 的表达式,它不是为字符数组定义的,也不是相应地为字符串文字隐式转换到的指针定义的。

你可以这样写

std::string a = "2323"s + "22323" + "232332";

使用用户定义的字符串文字 "2323"s 或者你可以写

std::string a = std::string( "2323" ) + "22323" + "232332";

另一种方法是声明对象a like

std::string a;

然后写

a += "2323";
a += "22323";
a += "232332";

这是一个演示程序。

#include <iostream>
#include <string>

int main() 
{
    {
        using namespace std::literals;
        
        std::string a = "2323"s + "22323" + "232332";
        std::cout << a << '\n';
    }
    
    {
        std::string a = std::string( "2323" ) + "22323" + "232332";
        std::cout << a << '\n';
    }
    
    {
        std::string a;
        
        a += "2323";
        a += "22323";
        a += "232332";
        
        std::cout << a << '\n';
    }
    
    return 0;
}

程序输出为

232322323232332
232322323232332
232322323232332

表达式 "2323" 不是 std::string,它是 const char[5]

自 C++14 起,您 可以 具有 std::string:

类型的文字
using namespace std::string_literals;

std::string a = "2323"s + "22323"s + "232332"s;

除了提供的其他答案外,您还可以使用 std::stringstream 构建 std::string

#include <sstream>

int main( )
{
    std::stringstream ss{ };
    ss << "2323" << "22323" << "232332";

   // Maybe you also want to conditionally append something else.
   if ( some_condition )
   {
       // Note that I'm inserting an integer here.
       ss << 42;
   }

   // When you're ready you can call the str( ) member function
   // to attain a copy of the underlying string.
   std::string s{ ss.str( ) };
}