在c ++中将wchar_t转换为wstring

时间:2014-04-03 09:24:43

标签: c++ visual-c++

我有以下代码。

wchar_t path[MAX_PATH +1] = {0};

SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, path);

这里我将程序数据文件夹路径带到"路径"这是wchar_t。我想将它转换为wstirng并打印出来。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

尝试以下

#include <string>
#include <iostream>

int main() {
  wchar_t path[MAX_PATH +1] = ...;
  std::wstring s(path);
  std::wcout << s;
  return 0;
}

答案 1 :(得分:3)

C ++ 11解决方案(底层存储保证是连续的数组):

std::wstring path;
path.resize(MAX_PATH +1);
SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path[0]);
path.shrink_to_fit();

答案 2 :(得分:1)

您不需要为此创建std::wstring

wchar_t path[MAX_PATH +1] = {0};

SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, path);

std::wcout << path;
相关问题