我弄了一个列表框在里面显示出所有的磁盘。。但是对最后一个ds+=_tcslen(ds)+1不解。。 HWND hList = GetDlgItem(hDlg,IDC_Drives);
int len = GetLogicalDriveStrings(0,NULL);//获取所有磁盘的长度
TCHAR* ds = new TCHAR[len];//高手帮我解释一下这里为什么要用new 这个 是数组吗?还有我没学过C语言哦。。直接就VC了。
GetLogicalDriveStrings(len,ds);
for(int i=0;i<len/4;++i)
{
ComboBox_AddString(hList,ds);
ds+=_tcslen(ds)+1;//_tcslen不是返回字符串长度吗?本来只能显示C:\怎么加1他就能显示D:\ F:\ E:\
}

解决方案 »

  1.   

    ds指针中保存的内容大概是这样的"C:\\\0D:\\\0E:\\\0F:\\\0",就是说每个盘符后面跟的是'\0'
      

  2.   

    \0是字符串的结束。如果安装3楼所说的+1就是又到下一个字符串的开始。
    ds+=_tcslen(ds)+1;//ds是指针_tcslen(ds)得到指针长度然后+1,可为什么指针能和数字相加?
      

  3.   

    我就是不理解ds里面是C:\\\0D:\\\0E:\\\0F:\\\0就是一个盘符后面多一个NULL,
    然后输出 ds里的长度也就是ds+=_tcslen(ds)+1就能到下一个盘了。。看来我要去学一下指针了
      

  4.   

    地址:http://blog.sina.com.cn/s/blog_613f5ee70100ewha.html