用const char*填充wstring的最佳方式

Best way to fill wstring with const char*

本文关键字:最佳 方式 wstring 填充 const char      更新时间:2023-10-16

我必须"翻译" a:

字符数据[32]

为:

测试器数据;

根据预处理器的定义,tstringstd::stringstd::wstring的类型定义。

假设data[32]只包含ASCII字符,将此数据传递到tstring对象的最简单方法是什么?

由于不需要进行任何字符转换,因此可以使用字符向量初始化这两个字符串。考虑这个例子:

#include <string>
#include <vector>
int main()
{
    char data[32];
    std::vector<char> v(data, data + 32);
    std::string str(v.begin(), v.end());
    std::wstring wstr(v.begin(), v.end());
}

编辑:不需要临时的std::字符串。我用一个例子更新了我的答案。

看这里:将string(或char*)转换为wstring(或wchar_t*)

#include <locale>
#include <codecvt>
#include <string>
#define XWSTRING
#ifdef XWSTRING
typedef std::wstring xstring;
#else 
typedef std::string xstring;
#endif
xstring initString(const char* data)
{
#ifdef XWSTRING
    static std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
    return xstring(converter.from_bytes(data));
#else
    return xstring(data);
#endif
}

int main()
{
    char in_data[32] = "HELLO WORLD";
    xstring out_data = initString(in_data);
}