【问题标题】:How to convert char to wchar_t*?如何将 char 转换为 wchar_t*?
【发布时间】:2021-01-29 06:18:21
【问题描述】:

正如标题所述,我有一个简单的 char,可以检索我正在查找的文件的完整路径名,我需要将其转换为 const wchar_t。我怎样才能做到这一点?下面是代码示例:

int main()
{
    char filename[] = "poc.png";
    char fullFilename[MAX_PATH];
    GetFullPathName(filename, MAX_PATH, fullFilename, nullptr);
    const wchar_t *path = fullFilename;
}

如您所见,我正在尝试获取要转换的文件名,但我找不到这样做的方法。最简单的解决方案是什么?

【问题讨论】:

  • 如果您仍然需要转换(由于某些其他原因),您可以在任何情况下简单地使用@tenfour 描述的 Win API 函数的 Unicode 版本您可以检查this 在 Windows 的情况下您可以使用MultiByteToWideChar
  • 第 1 步:找出源使用的窄字符编码。第 2 步:找出您要生成的宽字符编码。第三步:实现这两种字符编码之间的转换函数。

标签: c++ char type-conversion wchar-t


【解决方案1】:

您的代码不需要在charwchar_t 之间进行转换。很可能您实际上并不需要转换 字符类型。如果您想使用wchar_t-友好的GetFullPathNameW,那么只需使用wchar_t 而不是char

int main()
{
    wchar_t fullFilename[MAX_PATH];
    GetFullPathNameW(L"poc.png", MAX_PATH, fullFilename, nullptr);
    const wchar_t *path = fullFilename;
    return 0;
}

如果您确实需要在基于wchar_t 的C 样式字符串和基于char 的C 样式字符串之间进行转换,那么您可以使用API​​ MultiByteToWideCharWideCharToMultiByte

【讨论】:

  • 请记住,GetFullPathNameW 返回的值指示缓冲区是否足够大以容纳结果。 (路径可以比 MAX_PATH 长得多。)
猜你喜欢
  • 2018-01-07
  • 2011-03-14
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2012-06-07
相关资源
最近更新 更多