2013-12-08 59 views
7

我做的字符串分析,基本上我希望做的是这样的:如何组合多个char来创建一个字符串?

string signature = char[index+1] + '/' + char[index+2]; 

,但你不能做对char的,这样使我对这个问题的字符串连接,我怎么可以模拟级联在char的?

我知道C++中的字符串库有附加,但我不认为这适用于我的情况。有任何想法吗?

回答

14

您可以连接字符到std::string,您只需要其中一个操作数为std::string,否则您将添加整数。

std::string signature = std::string() + char_array[index+1] + '/' + char_array[index+2]; 

注意,如果无论是在链中的第一个或第二个操作数是std::string这仅适用。这将导致第一个电话operator+返回std::string,其余将跟随。所以这并没有给出预期的结果:

std::string signature = char_array[index+1] + '/' + char_array[index+2] + std::string(); 
+0

谢谢!对于一个字符串你可以做很多事情,很难跟踪它 – Sarah

1

您可以比较容易地连接这些字符和C风格的字符串到现有的字符串:

string signature; 

signature += char_array[index + 1]; // append character from char_array[index+1] 
signature += '/'; 
signature += char_array[index + 2]; // append character from char_array[index+2] 

你只需要确保++=的左侧是一个std::string

4

在C++ 11,你实际上可以做:

std::string signature{chars[index+1], '/', chars[index+2]}; 

不知道这是多么有用将在真正的代码,但它与你的榜样交易。

0

除了史蒂夫的和本杰明的解决方案,你也可以使用一个std::stringstream

std::stringstream ss; 
ss << char_array[index + 1] << '/' << char_array[index + 2]; 
std::string s = ss.str(); 
相关问题