【发布时间】:2020-09-08 09:43:20
【问题描述】:
我一直在做一些 C++ 编程,但偶然发现了一个奇怪的行为, 每当我尝试使用 GetCurrentDirectory() 获取当前目录时,它只会返回当前磁盘的字母。
代码如下:
TCHAR path[MAX_PATH + 1] = L"";
DWORD len = GetCurrentDirectory(MAX_PATH, path);
cout << (char *)path;
这是输出:
Z
因为我的项目在我的 Z:\ 磁盘中
我想知道它是否与缓冲区大小有关,但我将其设置为 MAX_PATH,甚至尝试将其设置为 1024。
【问题讨论】:
-
预期输出是什么?你在哪个目录运行你的程序?
-
我尝试将它放在桌面上的 C:\ 目录中,但它也只检索到 C 字母,因此需要完整路径,如 C:\Users\XXX\Desktop
-
你在 UNICODE 模式下编译你的程序。使用
wcout而不是cout。并且不要使用TCHAR类型,而是使用w_char。实际上(char *)演员是这里的罪魁祸首。TCHAR类型仅在您想将代码编译为 UNICODE 字符集程序或多字节字符集程序时才有用,后者现在已经过时了。 -
如果您只是使用复制和粘贴将纯文本包含到问题中,您的输出会更好地阅读。您的屏幕截图似乎截断了部分文本并与另一个窗口中的文本混合在一起。
-
@Jabberwocky 我试过了,它也只检索磁盘的字母