我有一个期望字符串的函数,我想将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*'的无效操作数到二元运算符+
为什么这无效?请帮忙
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)