c++ - 适用于不同字符编码的模板 ToString 函数

标签 c++

我写了一个加载/保存/创建 INI 数据格式的 INI 类,但是现在它只适用于 ascii 字符,我想扩展它以使用任何类型的字符编码,所以除了 char , wchar_t。为此,我必须设置各种字符串函数来进行解析;我有一些设置,但是我需要重写它们以使用任何类型的 basic_string。

所以,关于我的问题,我想要一个适用于任何类型字符编码的 ToString 函数,我该怎么做?

我有以下两个功能:

template <typename T>
static string toStr(const T& val)
{
    stringstream out;
    out << val;
    return out.str();
}

template <typename T>
static wstring toWStr(const T& val)
{
    wstringstream out;
    out << val;
    return out.str();
}

最佳答案

当我最初发布这个问题时,我已经接近答案了,但是犯了一个粗心的错误,因此在我还在打字的时候就解决了我自己的问题。所以对于那些想要一个适用于各种字符串编码的通用 toString 函数的人来说,这里是:

template<typename CharType, typename T>
static basic_string<CharType, char_traits<CharType>, allocator<CharType>> toString(const T& val)
{
    basic_stringstream<CharType> out;
    out << val;
    return out.str();
}

关于c++ - 适用于不同字符编码的模板 ToString 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477563/

相关文章:

c++ - Qt 将 UTF16 十六进制字符串转换为 QString

c++ - 为什么我的 For 循环没有完成收集数据以保存在动态分配的数组中?

c++ - 多个端口的多个线程?

c++ - 提供优化算法以处理带时间戳的值

c++ - 记录dll API然后模仿它

c++ - 来自 std::find 的此错误的优雅解决方案是什么?

c++ - 在 Visual C++ 2010 中安装 Eigen 库

c++ - 使用结构指针的 std::priority_queue 时出现意外结果

c++ - 将 Base* 转换为正确的派生类

c++ - 改变 uniform_int_distribution 的范围