私はいつも疑問に思っていましたが、なぜそうするのかについて満足のいく説明を見つけることができませんでした
std::string str = 50;
cout << str
ガベージを与えるか、コンパイルしません
と
std::ostringstream str << 50;
cout << str // or str.str()
動作します。
std::string が整数や整数のような型から変換演算子を実装するのを妨げる継承の制限は何ですか?
std::string str = 50;
これはコンパイルされません。basic_string
単一の からのコンストラクターはありませんint
。あなたの実装には欠陥があります。basic_string
他の型から文字列への変換は実行しません。文字列のみを処理します。
std::ostringstream str << 50;
これは、50 から "50" への変換を実行し、それを出力します。stringstream
は、他のタイプからテキストに変換するためのものです。
整数を文字列に変換する方法はいくつかありますが、あなたが言及した方法は間違っています。
次の C++/STL を見てください。
ostringstream
to_string
子:
sprintf