私は文字列の解析を行っていますが、基本的に私がやりたいことは次のようなものです。
string signature = char[index+1] + '/' + char[index+2];
しかし、charの文字列連結を行うことはできないので、この質問に私を導きます。charの連結をシミュレートするにはどうすればよいですか?
C++の文字列ライブラリに追加があることは知っていますが、私の場合はうまくいかないと思います。何か案は?
文字をstd::string
に連結できます。必要なのは、オペランドの1つをstd::string
にすることだけです。それ以外の場合は、整数を追加します。
std::string signature = std::string() + char_array[index+1] + '/' + char_array[index+2];
これは、チェーンの第1オペランドまたは第2オペランドのいずれかがstd::string
である場合にのみ機能することに注意してください。これにより、operator+
への最初の呼び出しでstd::string
が返され、残りはそれに続きます。したがって、これは期待される結果をもたらしません。
std::string signature = char_array[index+1] + '/' + char_array[index+2] + std::string();
C++ 11では、実際に次のことができます。
std::string signature{chars[index+1], '/', chars[index+2]};
これが実際のコードでどれほど役立つかはわかりませんが、あなたの例を扱っています。
文字と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
であることを確認する必要があります。
スティーブとベンジャミンのソリューションに加えて、std::stringstream
を使用することもできます。
std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();