如何将win32控制台中的wchar_t*
数组转换为std::string
变量
如何将win32控制台中的wchar_t*
数组转换为std::string
变量
使用wstring,看这段代码:
// Your wchar_t*
wchar_t* txt = L"Hello World";
wstring ws(txt);
// your new String
string str(ws.begin(), ws.end());
// Show String
cout << str << endl;
txt
包含任何非 ASCII 字符,此解决方案将失败。如果你将 "Hello World"
替换为 "..."
,那么 ...
将变成 &
。这个“解决方案”极具破坏性,会导致数据丢失。 - user1180790您应该使用属于命名空间std的wstring类。它有一个构造函数,可以接受wchar_t*类型的参数。
以下是使用此类的完整示例。
wchar_t* characters=L"Test";
std::wstring string(characters);
您不必使用包含String.begin()和String.end()的构造函数,因为std::wstring的构造函数会自动分配内存来存储wchar_t数组,并将数组复制到分配的内存中。