我有一个我无法触摸的功能,是一个“日志制作者”,它在文件中打印一些东西,当我运行该文件时显示它。问题是该函数只获得const string
所以如果我想打印一些东西我必须转换这个数据类型的所有内容(我不能使用cout)。
itoa& atoi功能不是标准功能,所以我也不能使用它。 C ++对数据类型非常“特殊”,并且不容易接受转换,所以这是我的问题: 如何将每种类型的数据转换为字符串以用于日志目的?
我可能应检查函数上的数据类型以转换事物并将它们返回到stringstream
(当然,我必须将其转换为字符串)。
那么,有关如何做到这一点的任何建议吗?
答案 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)
您可以使用
或
答案 2 :(得分:0)
是的,如果你想要字符串表示stringstream
中的任意类型,那么中间声音就像一个解决方案。
答案 3 :(得分:0)
我假设函数需要const std :: string&amp; ?
使用std :: stringstream的方法是正确的。或者,您可以简单地为要直接输出的类编写toString()方法。但是,通常当人们想要将对象输出到文件时,会重载&lt;&lt;该特定类型的运算符。