此循环正在执行比预期更多的迭代

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)

Fre*_*son 5

我认为你的循环应该看起来更像这样:

编辑:添加检查以忽略空行

while (getline(DeviceList, line))
{
    if (line.length() > 0)
    {
        devices[count] = line;
        ++count;
    }
}
Run Code Online (Sandbox Code Playgroud)