getline()和空字符串

时间:2019-06-30 04:40:05

标签: c++ fstream cin getline

这个问题似乎与Why does getline return empty lines if none exist

有关

与上述问题不同,我在代码中使用了两个不同的流,即cinfstream。我在>>上使用cin运算符,然后在getline()上调用fstream。该代码段复制如下:

int main() {

        int num_tag_lines;
        int num_queries;
        string line;        
        cin >> num_tag_lines >> num_queries;

        fstream file_h("h_input.txt");
            if(file_h.is_open()){
                    while(!file_h.eof()){
                            line.clear();
                            getline(file_h, line);
                            assert(!line.empty());
                    }
                    file_h.close();
                    file_h.clear();
           }

    return 0;
}

断言在代码中失败。我所看到的是,即使我检查了getline()文件中的空行并且似乎没有任何内容,input.txt仍从输入文件input.txt的末尾读取了一个空字符串。

1 <tag1 value = "HelloWorld">
2 <tag2 name = "Name1">
3 </tag2>
4 </tag1>

只需添加一下,我正在Windows上使用Cygwin环境进行编码,并且该文件位于Windows上。但是我认为那应该没有任何区别。

欣赏您的想法。

TIA

0 个答案:

没有答案