std :: string'+':无法添加两个指针

And*_*nko 3 c++ stdstring visual-c++

为何分配

std::string s="aaa"+1
Run Code Online (Sandbox Code Playgroud)

工作得很好

std::string s="aaa"+1+"bbb" 
Run Code Online (Sandbox Code Playgroud)

得到错误 Error 14 error C2110: '+' : cannot add two pointers

mas*_*tov 5

没有+运算符来连接C字符串.C字符串只是指针(const char *),所以如果你给它添加一个数字,它只会增加指针.然后将其转换为C++字符串:

std::string s = "aaa" + 1

                |=======|
                  "aa"
               const char *

           |==============|
                 "aa"
             std::string
Run Code Online (Sandbox Code Playgroud)

然后在第二步中失败,当你尝试连接第二个字符串时,因为虽然向指针添加一个常量仍然有意义(即使不是你的情况),但你无法理解添加两个指针.

"aaa" + 1 + "bbb" 

|========|
   "aa"
const char *

            |===|
         const char *
Run Code Online (Sandbox Code Playgroud)

为了确保你实际连接并且不加总指针,我建议使用a stringstream.这也可以确保您的常数被正确转换为a string.

std::stringstream ss;
ss << "aaa" << 1 << "bbb";
std::string s = ss.str();
Run Code Online (Sandbox Code Playgroud)

这适用于每个具有operator<<重载的类型.