2013-12-08 6 views
7

私は、文字列の解析を行うと、基本的に私は何をしたいのは、このようなものですしています:複数の文字を組み合わせて文字列を作成するにはどうすればよいですか?

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

しかし、あなたは、私は連結をシミュレートすることができますどのように、この質問に私をもたらし文字のように文字列の連結を行うことはできませんチャーの?

私はC++の文字列ライブラリが追加されていることを知っていますが、私のケースではうまくいかないと思います。何か案は?

答えて

14

std::stringに文字を連結することができます。オペランドの1つだけを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

あなたが実際に行うことができます:

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();