2013-12-08 96 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(); 
相關問題