我正在使用多字节字符编写C ++ MFC应用程序的代码,并且试图反复遍历驱动器号以检查USB连接。我的代码的这一部分开始导致我在调试模式下出现一些问题:

for(int i = 0; i < 26; i++){
...
    //Possible device path
    TCHAR drivePath[3] = {_T('A'+i), _T(':'), _T('\\')};
...
}


永远找不到驱动器,因为此数组始终在末尾附加“ w”。

例如,对于i=0drivePath=A:\w

我的假设是它与多字节/ unicode相关,但是我假设通过使用TCHAR_T可以解决此问题。

有什么问题吗?

最佳答案

您永远不会以空字符终止数组。

TCHAR drivePath[3] = {_T('A'+i), _T(':'), _T('\\')};


应该

TCHAR drivePath[4] = {_T('A'+i), _T(':'), _T('\\'), _T('\0')};
// or
TCHAR drivePath[] = {_T('A'+i), _T(':'), _T('\\'), _T('\0')};
//             ^^ let the compiler figure out the size

关于c++ - TCHAR数组在反斜杠后附加w,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35203652/

10-12 15:58