c++ - TCHAR 数组在反斜杠后追加 w

标签 c++ arrays mfc char multibyte

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

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/

相关文章:

c++ - .DEF 文件上的 Intellisense 错误

c++ - 为什么在使用可变参数函数时必须将 CString 强制转换为 LPCSTR?

c++ - 当项目在 Release模式下崩溃时如何获取函数名称和行号

c++ - 如何从 QInputDialog 获取文本(正则表达式)

c# - 如何实现具有注入(inject)功能的通用结构层次结构

c++ - 是否存在使用 Purify 导致 SIGABRT 在 g++ 中抛出异常的已知问题?

windows - MFC中如何获取子菜单?

arrays - 控制 PowerShell 中函数返回的类型

javascript - 如何使用函数(for-loop)从按钮获取用户输入以显示在文本框中?

c++ - 拆分数组字符