1

触れられない機能があります.「ログメーカー」です.印刷するものをファイルに入れ、ファイルを実行すると表示されます. 問題は、const string何かを印刷したい場合にのみ関数が取得されることです。このデータ型のすべてを変換する必要があります (cout は使用できません)。

itoa と atoi 関数は標準関数ではないため、どちらも使用できません。C++ はデータ型に関して非常に「特別」であり、変換を非常に簡単に受け入れないため、これが私の質問です:ログの目的ですべてのデータ型を文字列に変換するにはどうすればよいですか

おそらく、関数のデータ型をチェックして変換し、それらを に返す必要がありstringstreamます (もちろん、文字列に変換する必要があります)。

それで、それを行う方法について何かアドバイスはありますか?

4

4 に答える 4

5

boost::lexical_castの使用をカプセル化するostringstreamので、それを使用できます。それ以外の場合、コードはそれほど難しくありません。

template<typename T>
std::string
toString( T const& object )
{
    std::ostringstream results;
    results << object;
    return results.str();
}

stringstream(ここで使用する理由はありませんostringstream。大体は十分です。

于 2011-10-31T09:59:45.183 に答える
1

使用できます

  • std :: stringstream

また

  • lexical_cast<>をブーストします
于 2011-10-31T10:00:04.503 に答える
0

はい、文字列表現で任意のタイプが必要な場合、stringstream中間は解決策のように聞こえます。

于 2011-10-31T09:59:13.803 に答える
0

関数は const std::string & ? を期待していると思います。

std::stringstream を使用したアプローチは正しいです。あるいは、直接出力したいクラスの toString() メソッドを単純に書くこともできます。ただし、通常、オブジェクトをファイルに出力する場合は、その特定の型の << 演算子をオーバーロードします。

于 2011-10-31T10:00:59.917 に答える