为什么我不能从字符构建字符串*



根据我构建的代码填充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;

相关内容

  • 没有找到相关文章

最新更新