我可以随意为C ++的operator+()
类编写string
函数,这样我就不必使用<sstream>
来连接字符串吗?
例如,而不是做
someVariable << "concatenate" << " this";
我可以添加operator+()
以便我可以
someVariable = "concatenate" + " this";
答案 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
类型。