根据我构建的代码填充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
您可以直接使用wchar_t
,并使用相应的支持wchar_t
的API将数据直接检索到wchar_t
,然后构造wstring
。_dupenv_s
函数有一个广泛的对应项-wdupnv_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* 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;