我做的字符串分析,基本上我希望做的是這樣的:如何組合多個char來創建一個字符串?
string signature = char[index+1] + '/' + char[index+2];
,但你不能做對char的,這樣使我對這個問題的字符串連接,我怎麼可以模擬級聯在char的?
我知道C++中的字符串庫有附加,但我不認爲這適用於我的情況。有任何想法嗎?
我做的字符串分析,基本上我希望做的是這樣的:如何組合多個char來創建一個字符串?
string signature = char[index+1] + '/' + char[index+2];
,但你不能做對char的,這樣使我對這個問題的字符串連接,我怎麼可以模擬級聯在char的?
我知道C++中的字符串庫有附加,但我不認爲這適用於我的情況。有任何想法嗎?
您可以連接字符到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();
您可以比較容易地連接這些字符和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
。
如果你使用.Net做這個,可以在字符串構造函數中使用字符數組。
http://msdn.microsoft.com/en-us/library/ttyxaek9(v=vs.110).aspx
在C++ 11,你實際上可以做:
std::string signature{chars[index+1], '/', chars[index+2]};
不知道這是多麼有用將在真正的代碼,但它與你的榜樣交易。
除了史蒂夫的和本傑明的解決方案,你也可以使用一個std::stringstream
:
std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();
謝謝!對於一個字符串你可以做很多事情,很難跟蹤它 – Sarah