据我所知,C++只允许将2个字符串组合在一起,即:
s = s1 + s2
但是如何将多个字符串组合在一起呢?喜欢:
s = s1 + s2 + s3 + s4 + ... + sn
Run Code Online (Sandbox Code Playgroud)
cpx*_*cpx 11
如果你试图追加std :: string类的字符串对象,这应该可行.
string s1 = "string1";
string s2 = "string2";
string s3 = "string3";
string s = s1 + s2 + s3;
Run Code Online (Sandbox Code Playgroud)
要么
string s = string("s1") + string("s2") + string("s3") ...
Run Code Online (Sandbox Code Playgroud)
首先,你可以做+ sn的事情.虽然假设你在C++ 03上使用字符串,它将采用指数 quadradic(见注释)时间std::basic_string<t>.
您可以使用std::basic_string<t>::appendin con std::basic_string<t>::reserve 来在O(n)时间内连接字符串.
编辑:例如
string a;
//either
a.append(s1).append(s2).append(s3);
//or
a.append("I'm a string!").append("I am another string!");
Run Code Online (Sandbox Code Playgroud)
s = s1 + s2 + s3 + .. + sn;
Run Code Online (Sandbox Code Playgroud)
虽然它可以创建很多临时工作(一个好的优化编译器应该有帮助),但它会有效,因为它将被有效地解释为:
string tmp1 = s1 + s2;
string tmp2 = tmp1 + s3;
string tmp3 = tmp2 + s4;
...
s = tmpn + sn;
Run Code Online (Sandbox Code Playgroud)
保证不创建临时对象的另一种方法是:
s = s1;
s += s2;
s += s3;
...
s += sn;
Run Code Online (Sandbox Code Playgroud)