web-dev-qa-db-ja.com

C ++文字列ストリームを使用してintを追加する方法は?

「Something」という単語(または任意の単語)を含む文字列ストリームにintを追加する方法の簡単な例を教えてもらえますか?

14
Goles
stringstream ss;
ss << "Something" << 42;

今後の参考のために、これをチェックしてください。

http://www.cplusplus.com/reference/iostream/stringstream/

19
Daniel A. White

私はおそらくこの一般的な順序で何かをするでしょう:

#include <string>
#include <sstream>
#include <iostream>

int main() {      
    std::stringstream stream("Something ");

    stream.seekp(0, std::ios::end);
    stream << 12345;

    std::cout << stream.str();
    return 0;
}

通常のストリームでは、最後に追加するために、2番目のパラメーターとしてstd::ios::ateまたはstd::ios::appを使用して開きますが、文字列ストリームでは、(少なくとも実際のストリームでは)確実に機能しないようです。コンパイラー-gccもVC++も、私がそうするとき/そうする場合に私が期待する出力を生成しません)。

4
Jerry Coffin

すでにブーストを使用している場合は、これに使用できる lexical_cast があります。これは基本的に上記のパッケージバージョンであり、ストリームへの書き込みとストリームからの読み取りが可能なすべてのタイプで機能します。

string s("something");

s += boost::lexical_cast<string>(12);

Boostをまだ使用していない場合は、おそらく使用する価値はありませんが、使用している場合は、コードをより明確にすることができます。

foo(string("something")+boost::lexical_cast<string>(12));
1
KeithB