反斜杠后附加的TCHAR数组

时间:2016-02-04 14:29:05

标签: c++ arrays mfc char multibyte

我正在使用多字节字符编写C ++ MFC应用程序,我正在尝试迭代运行驱动器号以检查USB连接。我的代码的这一部分开始在调试模式中引起一些问题:

i=0

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

例如,对于drivePath=A:\wTCHAR

我的假设是它与多字节/ unicode相关,但我认为通过使用_Tdef bus(): busurl = ('https://api.tfl.gov.uk/Line/9/Arrivals?stopPointId=IDHERE&app_id= % secret &app_key= % key') bus = requests.get(busurl) busarrival = bus.json() count = 0 for i in busarrival: if count <= 2: status = (i['timeToStation']) result = (status / 60) print 'Next bus in {} mins'.format(result) count += 1 ,它可以解决这个问题。

有什么问题吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

另一种选择:

TCHAR drivePath[] = { _T("A:\\") };
for (char ch = 'A'; ch <= 'Z'; ch++){
    //Possible device path
    drivePath[0] = ch;
}