为什么我不能从 char* 构造一个 wstring
Why I can't construct a wstring from char*
根据我构建的填充 char*
代码:
char* pathAppData = nullptr;
size_t sz = 0;
_dupenv_s(&pathAppData, &sz, "APPDATA");
我可以很容易地用这段代码构造一个string
,以后append
这个string
:
std::string sPathAppData(pathAppData);
sPathAppData.append("\MyApplication");
但我无法从该代码创建 wstring
。为什么使用 wstring
如此复杂?我对所有这些类型都感到疯狂。
std::wstring wPathAppData(pathAppData); // Impossible
您必须使用迭代器进行复制。这就是您可以做到的。
char* pathAppData = nullptr;
size_t sz = 0;
_dupenv_s(&pathAppData, &sz, "APPDATA");
std::string sPathAppData(pathAppData);
sPathAppData.append("\MyApplication");
std::wstring wPathAppData(begin(sPathAppData), end(sPathAppData));
wcout << wPathAppData << endl;
您可以直接使用wchar_t
并使用相应的wchar_t
支持API直接检索数据到wchar_t
,然后构造wstring
。 _dupenv_s
函数有一个广泛的对应 - _wdupenv_s.
您的代码将如下所示:
wchar_t* pathAppData = nullptr;
size_t sz = 0;
_wdupenv_s(&pathAppData, &sz, L"APPDATA");
std::wstring wPathAppData(pathAppData);
wPathAppData.append(L"\MyApplication")
这也可能是一个有趣的读物:std::wstring VS std::string
根据我构建的填充 char*
代码:
char* pathAppData = nullptr;
size_t sz = 0;
_dupenv_s(&pathAppData, &sz, "APPDATA");
我可以很容易地用这段代码构造一个string
,以后append
这个string
:
std::string sPathAppData(pathAppData);
sPathAppData.append("\MyApplication");
但我无法从该代码创建 wstring
。为什么使用 wstring
如此复杂?我对所有这些类型都感到疯狂。
std::wstring wPathAppData(pathAppData); // Impossible
您必须使用迭代器进行复制。这就是您可以做到的。
char* pathAppData = nullptr;
size_t sz = 0;
_dupenv_s(&pathAppData, &sz, "APPDATA");
std::string sPathAppData(pathAppData);
sPathAppData.append("\MyApplication");
std::wstring wPathAppData(begin(sPathAppData), end(sPathAppData));
wcout << wPathAppData << endl;
您可以直接使用wchar_t
并使用相应的wchar_t
支持API直接检索数据到wchar_t
,然后构造wstring
。 _dupenv_s
函数有一个广泛的对应 - _wdupenv_s.
您的代码将如下所示:
wchar_t* pathAppData = nullptr;
size_t sz = 0;
_wdupenv_s(&pathAppData, &sz, L"APPDATA");
std::wstring wPathAppData(pathAppData);
wPathAppData.append(L"\MyApplication")
这也可能是一个有趣的读物:std::wstring VS std::string