0 c++
我遇到以下代码问题.我期望do-while循环执行4次,对于它正在读取的文本文件的每一行执行一次,但实际上它是执行五次,这导致程序中稍后的段错误.我在这做错了什么导致它执行额外的迭代?我试过用do-while一个简单的while循环替换他,但结果是一样的.
int count = 0;
string devices[4];
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list.txt");
do
{
getline(DeviceList, line);
devices[count] = line;
count ++;
} while(!DeviceList.eof());
Run Code Online (Sandbox Code Playgroud)
device_list.txt 包含以下内容:
WirelessAdaptor
GPU
CPU
Display
Run Code Online (Sandbox Code Playgroud)
我认为你的循环应该看起来更像这样:
编辑:添加检查以忽略空行
while (getline(DeviceList, line))
{
if (line.length() > 0)
{
devices[count] = line;
++count;
}
}
Run Code Online (Sandbox Code Playgroud)