C++ 将字符*连接到字符串

C++ 将字符*连接到字符串,c++,C++,我有一个函数需要一个字符串,我想将const char*连接到一个要返回的字符串 下面是帮助说明此场景的示例代码: void TMain::SomeMethod(std::vector<std::string>* p) { p->push_back(TAnotherClass::Cchar1 + "/" + TAnotherClass::Cchar2); } 我收到以下错误: “const char*”和“const char*”类型的操作数对二进制运算符无效+ 为什么这

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

下面是帮助说明此场景的示例代码:

void TMain::SomeMethod(std::vector<std::string>* p)
{
  p->push_back(TAnotherClass::Cchar1 + "/" + TAnotherClass::Cchar2);
}
我收到以下错误: “const char*”和“const char*”类型的操作数对二进制运算符无效+


为什么这是无效的?请帮助
字符常量*
不能与
+
运算符一起使用,如错误所示

您需要做的是:

p->push_back(std::string(TAnotherClass::Cchar1) + "/" + TAnotherClass::Cchar2);
          //^^^^^^^^^^^^ notice this
它创建了一个类型为
std::string
的临时对象,然后您可以对其使用
+
。它连接字符串,一路创建临时字符串,最后将最后一个字符串传递给
push_back

除此之外,正如@Konrad在注释中指出的,不要将指针传递给该方法,而是使用引用,如下所示:


void TMain::SomeMethod(std::vector&p)//,因为您正在尝试添加两个指针。无法为char*重写+运算符

您可以这样做:

p->push_back(std::string(TAnotherClass::Cchar1) + "/" + TAnotherClass::Cchar2);
请记住,上面使用的
std::string(…)
是使用函数表示法的C样式转换。在这种情况下,它相当于静态转换(…)


是否允许在代码中使用函数样式强制转换取决于您自己。有些策略针对所有C样式强制转换。在我以前的工作场所中,这种特殊的使用是允许的,但没有其他的。

更具体地说,使用两个
const char*
s时没有过载。谢谢,我试图尽可能避免std::conversionas mush,但如果那是唯一的方法:)并且除了上面所说的,不要向方法传递指针,请使用引用!
void TMain::SomeMethod(std::vector<std::string> & p) //<-- note & 
{
  p.push_back(std::string(TAnotherClass::Cchar1)+"/"+TAnotherClass::Cchar2);
}
p->push_back(std::string(TAnotherClass::Cchar1) + "/" + TAnotherClass::Cchar2);