【发布时间】:2015-02-27 12:13:48
【问题描述】:
如何在 win32 控制台中将 wchar_t* 数组转换为 std::string varStr。
【问题讨论】:
-
请显示您的代码(Win32 API)函数
标签: c++ string winapi type-conversion wchar-t
如何在 win32 控制台中将 wchar_t* 数组转换为 std::string varStr。
【问题讨论】:
标签: c++ string winapi type-conversion wchar-t
使用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" 替换为"…",则… 变为&。此解决方案危害极大,会导致数据丢失。
您应该使用属于命名空间 std 的 wstring 类。它有一个构造函数,它接受 wchar_t* 类型的参数。
这是一个使用这个类的完整示例。
wchar_t* characters=L"Test";
std::wstring string(characters);
您不必使用包含 String.begin() 和 String.end() 的构造函数,因为 std::wstring 的构造函数会自动分配内存来存储 wchar_t 数组并将数组复制到分配的内存中。
【讨论】: