是否可以为C ++字符串类创建一个运算符函数?并连接“文字”?

时间:2011-11-04 01:29:47

标签: c++ string concatenation

我可以随意为C ++的operator+()类编写string函数,这样我就不必使用<sstream>来连接字符串吗?

例如,而不是做

someVariable << "concatenate" << " this";

我可以添加operator+()以便我可以

someVariable = "concatenate" + " this";

1 个答案:

答案 0 :(得分:15)

std::string operator+ 连接两个std::string。但问题是"concatenate""this"不是两个std::string;它们属于const char []类型。

如果你想出于某种原因连接两个文字"concatenate""this"(通常你可以将字符串分成多行),你可以这样做:

string someVariable = "concatenate" " this";

编译器会意识到你确实想要string someVariable = "concatenate this";


如果"concatenate""this"存储在std::string s中,则以下 有效:

string s1 = "concatenate";
string s2 = " this";

string someVariable = s1 + s2;

string s1 = "concatenate";

string someVariable = s1 + " this";

甚至

string someVariable = string("concatenate") + " this";

在调用" this"时,std::string将自动转换operator+对象中。要进行此转换,至少有一个操作数必须属于std::string类型。