C++中的转换问题(应为字符串)

Conversion problems in C++ (string expected)

本文关键字:字符串 问题 转换 C++      更新时间:2023-10-16

我有一个我不能触摸的函数,它是一个"日志生成器",它把一些东西放在文件中打印,并在我运行文件时显示出来。问题是这个函数只得到const string,所以如果我想打印一些东西,我必须转换这个数据类型中的所有内容(我不能使用cout(。

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

也许我应该检查函数上的数据类型来转换内容,并将它们返回到stringstream中(当然,我必须将其转换为字符串(。

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

boost::lexical_cast封装了ostringstream的使用,因此可以使用它。否则,代码就没那么难了:

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

(这里没有理由使用stringstreamostringstream在很大程度上就足够了。

您可以使用

  • std::字符串流

  • 提升词汇_列表<>

是的,如果您想要任意类型的字符串表示stringstream中间听起来像是一个解决方案。

我假设函数需要一个常量std::string&

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