将char*连接到字符串

use*_*456 2 c++

我有一个期望字符串的函数,我想将const char*连接到要返回的字符串.

以下是帮助说明此方案的示例代码:

void TMain::SomeMethod(std::vector<std::string>* p)
{
  p->push_back(TAnotherClass::Cchar1 + "/" + TAnotherClass::Cchar2);
}
Run Code Online (Sandbox Code Playgroud)

这是另一类来自:

class TAnotherClass
{
 public:
   static const char * Cchar1;
   static const char * Cchar2;
};

const char * TAnotherClass::Cchar1 = "Home";
const char * TAnotherClass::Cchar2 = "user";
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:类型'const char*'和'const char*'的无效操作数到二元运算符+

为什么这无效?请帮忙

Naw*_*waz 6

char const*+错误说,不能与运算符一起使用.

你需要做的是:

p->push_back(std::string(TAnotherClass::Cchar1) + "/" + TAnotherClass::Cchar2);
          //^^^^^^^^^^^^ notice this
Run Code Online (Sandbox Code Playgroud)

它创建一个类型的临时对象std::string,然后您可以使用+它.它连接字符串,一直创建临时字符,最后将最终字符串传递给push_back.

除此之外,正如@Konrad在评论中指出的那样,不要将指针传递给方法,而是使用引用,如:

void TMain::SomeMethod(std::vector<std::string> & p) //<-- note & 
{
  p.push_back(std::string(TAnotherClass::Cchar1)+"/"+TAnotherClass::Cchar2);
}
Run Code Online (Sandbox Code Playgroud)

  • 更具体地说,没有重载需要两个`const char*s. (2认同)