【发布时间】:2017-02-09 11:16:38
【问题描述】:
我正在尝试列出我的电脑的逻辑驱动器并将结果添加到向量中,但我得到了这个奇怪的result = ;;;。
我在这里缺少什么?
std::vector<std::string> directory::getLogicalDrives() {
DWORD mydrives = 100;
char lpBuffer[100];
DWORD drives = GetLogicalDriveStrings(mydrives, lpBuffer);
std::vector<std::string> driveList;
for (int i = 0; i < 100; i++) {
std::string drive(3, '%c' + lpBuffer[0]); // Missing something?
driveList.push_back(drive);
}
return driveList;
}
【问题讨论】:
-
您是否尝试过使用调试器单步执行您的代码?
-
'%c' + lpBuffer[0] - 这应该怎么做?
-
当
'%c' + lpBuffer[0]解析为;时,lpBuffer[0]的值是多少? -
阅读 getdrivestrings 的规范“一个指向缓冲区的指针,它接收一系列以空字符结尾的字符串,系统中每个有效驱动器一个,加上一个额外的空字符。每个字符串都是一个设备姓名。”。您没有处理格式的代码