C++ 如何将char转换为wchar\u t*?

C++ 如何将char转换为wchar\u t*?,c++,char,type-conversion,wchar-t,C++,Char,Type Conversion,Wchar T,正如标题所述,我有一个简单的char,用于检索我正在查找的文件的完整路径名,我需要将其转换为const wchar\t。我怎样才能做到这一点?下面是一个代码示例: int main() { char filename[] = "poc.png"; char fullFilename[MAX_PATH]; GetFullPathName(filename, MAX_PATH, fullFilename, nullptr); const wchar

正如标题所述,我有一个简单的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;
}

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

您的代码不需要在
char
wchar\t
之间进行转换。很可能您实际上不需要转换字符类型。如果您想使用
wchar\u t
友好的
GetFullPathNameW
,那么只需使用
wchar\u 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\u t
的C样式字符串和基于
char
的C样式字符串之间进行转换,那么您可以使用API和。

如果您仍然需要转换(出于某些其他原因),您可以在任何情况下使用@tenfour描述的Unicode版本的Win API函数您可以在Windows中检查是否可以使用步骤1:找出源代码使用的窄字符编码。第2步:找出要生成的宽字符编码。步骤3:在这两个字符编码之间实现一个转换函数。请记住GetFullPathNameW返回的值指示缓冲区是否足够大以容纳结果。(路径可以比最大路径长很多。)