3

此代码适用于 Windows 7,但不适用于 Windows XP(仅输出启动文件夹路径的一部分)

#include <iostream>
#include <shlobj.h>

using namespace std;
int main()
{
    wchar_t startupFolder[1024];
    HRESULT hr = SHGetFolderPath(0, CSIDL_STARTUP, 0, 0, startupFolder);
    if (SUCCEEDED(hr))
        wcout << L"Startup folder = " << startupFolder << endl;
    else
        cout << "Error when getting startup folder\n";
    getchar();
    return 0;
}

输出为:启动文件夹 = C:\Documents and Settings\Admin\ <- 光标在这里。不提供换行符。我也有俄罗斯window xp。我认为这是 unicode 问题。

当我使用 wprintf 我得到: C:\Documents and Settings\Admin\???????? ......

谢谢。

4

1 回答 1

3

问题是您的 XP 控制台使用的字体不包含您尝试输出的俄语字符的字形。Windows 7 附带并默认在其控制台中使用的字体确实具有更广泛的 Unicode 代码点覆盖范围。您需要将控制台配置为使用包含所需字形的字体。

于 2012-04-08T11:27:02.967 回答