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

您可以使用

  • 标准::字符串流

或者

  • 提升 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 回答