我正在使用多字节字符编写C ++ MFC应用程序的代码,并且试图反复遍历驱动器号以检查USB连接。我的代码的这一部分开始导致我在调试模式下出现一些问题:
for(int i = 0; i < 26; i++){
...
//Possible device path
TCHAR drivePath[3] = {_T('A'+i), _T(':'), _T('\\')};
...
}
永远找不到驱动器,因为此数组始终在末尾附加“ w”。
例如,对于
i=0
,drivePath=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/