C ++中的转换问题(预期的字符串)

时间:2011-10-31 09:55:07

标签: c++ logfiles

我有一个我无法触摸的功能,是一个“日志制作者”,它在文件中打印一些东西,当我运行该文件时显示它。问题是该函数只获得const string所以如果我想打印一些东西我必须转换这个数据类型的所有内容(我不能使用cout)。

itoa& atoi功能不是标准功能,所以我也不能使用它。 C ++对数据类型非常“特殊”,并且不容易接受转换,所以这是我的问题: 如何将每种类型的数据转换为字符串以用于日志目的?

我可能应检查函数上的数据类型以转换事物并将它们返回到stringstream(当然,我必须将其转换为字符串)。

那么,有关如何做到这一点的任何建议吗?

4 个答案:

答案 0 :(得分:5)

boost::lexical_cast封装了ostringstream的使用,所以你 可以用那个。否则,代码就不那么困难了:

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

(这里没有理由使用stringstream; ostringstream基本上就足够了。

答案 1 :(得分:1)

您可以使用

  • 的std :: stringstream的

  • 提升lexical_cast&lt;&gt;

答案 2 :(得分:0)

是的,如果你想要字符串表示stringstream中的任意类型,那么中间声音就像一个解决方案。

答案 3 :(得分:0)

我假设函数需要const std :: string&amp; ?

使用std :: stringstream的方法是正确的。或者,您可以简单地为要直接输出的类编写toString()方法。但是,通常当人们想要将对象输出到文件时,会重载&lt;&lt;该特定类型的运算符。