读取文本时,它识别两行而不是三行

问题描述 投票:0回答:1

在这里,我尝试让 getData 读取文本文件的内容,并将文件的每一行存储为向量中的单独字符串元素。

bool getData(const std::string& inputLocation, std::vector<std::string>& data)
{
    // TODO: Complete this function, and fix return value

    std::ifstream inputFile(inputLocation);

    if (!inputFile.is_open())
    {
        return false;
    }

    std::string line;

    while (std::getline(inputFile, line))
    {
        data.push_back(line);
    }

    inputFile.close();
    
    return true;
}

给定的txt文件是这样的:

YVOHJEZQLDITAUPKWBRCMXGNSF // first line
HELLOWORLD // second line
// Note that this is the third line with absolutely nothing in it.

问题是,当我测试 getData 是否正常工作时,它没有正常工作。原因是 getData 应该读取三行而不是两行。

c++
1个回答
0
投票

如果第3行没有数据,连换行符都没有,例如:

YVOHJEZQLDITAUPKWBRCMXGNSF<break>
HELLOWORLD<break>

那么从第 3 行就没有任何内容可读取,因此

getline()
将设置
failbit
eofbit
标志,从而在读取第 2 行后中断循环。

如果第3行没有数据但有换行符,例如:

YVOHJEZQLDITAUPKWBRCMXGNSF<break>
HELLOWORLD<break>
<break>

然后从第 3 行读取一些内容,因此

getline()
将成功并且尚未设置任何标志,并为第 3 行返回一个空字符串。

在线演示

© www.soinside.com 2019 - 2024. All rights reserved.