0

我需要读取 Windows 7 中的当前目录,该目录与当前使用的语言环境不同。所以我想到了使用 GetCurrentDirectoryW(),因为它与 unicode 兼容,与 wchar_t*。但是,我需要使用现有的 API,因此需要将其转换为 char*。为此,我使用了 wcstombs() 函数。但是,转换没有正确进行。下面是我使用的代码:

    wchar_t w_currentDir[MAX_PATH + 100];
    char currentDir[MAX_PATH + 100];
    GetCurrentDirectoryW(MAX_PATH, w_currentDir);
    wcstombs (currentDir, w_currentDir, MAX_PATH + 100);
    printf("%s \n", currentDir);

我当前所在的目录是C:\特斯塔敌人。转换完成后,只有完整路径的“C:\”部分正确转换为 char*。其他字符不是,它们是垃圾值。我使用的这种方法有什么问题?我该如何纠正这个问题?

谢谢!

4

1 回答 1

1

问题是不可能进行适当的转换。宽字符可能没有常规字符等效项(这就是为什么wchar首先存在的原因。所以你应该使用wprintf

GetCurrentDirectoryW(MAX_PATH, w_currentDir);
wprintf("%s \n", w_currentDir);
于 2012-11-19T04:40:45.677 回答