首页 > 解决方案 > 使用 getline 逐行读取文件

问题描述

我需要帮助。我正在编写一个非常基本的程序,它只是打开一个文件,逐行读取并打印这些行。我遇到的问题是,即使文件完成,他也会不断刷新 while 循环。我正在使用 while(getline) 循环来读取文件,我不知道它是否正确。我添加了一个计数器 k 只是为了查看它在文件结束后继续读取多少行。有人知道为什么会这样吗?感谢所有会回复的人!

代码是

#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
#include <cstring>
#include <stdio.h>




int main () {
fstream f;
string n;
int k=0;
f.open("../db_names.txt");
if(f.is_open()) {
    while (getline(f, n)) {
        k++;
        cout << n << endl;
        cout << k;
    }
}
    return 0;
}

该文件是

s123456;Alessio;Rossi della scala;email@gmail.com
s123789;Richard;Frost;email@gmail.com
s432345;Harry;Stuart;email@gmail.com
s235799;Marco;Rossi;email@gmail.com
s456543;Luciano;Benevento;email@gmail.com

输出是

1s123789;Richard;Frost;email@gmail.com
2s432345;Harry;Stuart;email@gmail.com
3s235799;Marco;Rossi;email@gmail.com
4s456543;Luciano;Benevento;email@gmail.com
5
6
7
8
Process finished with exit code 0

为什么k最终值为8?这意味着它读取了 8 次 while 循环,但为什么呢?我正在使用 C++ 14

标签: filegetline

解决方案


推荐阅读