我正在编写一个包含多字节字符的 C++ MFC 应用程序,我正在尝试反复运行驱动器盘符以检查 USB 连接。我的这部分代码开始导致我在 Debug模式下出现一些问题:
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/