file - 使用 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
解决方案
推荐阅读
- ip-address - Maxmind Geoip2 API vs 可下载数据库
- javascript - 父母和孩子之间的角度导航路由
- python - Python 不能正常使用回车符(新行)
- haskell - 99 个 Haskell 问题 #9
- c# - 如何保护应用程序免受 xsrf 攻击并在 asp.net core react js 应用程序中使用 AntiForgeryToken
- powershell - 找不到驱动器。名为“c”的驱动器不存在
- webclient - 在 ParallelFlux 上使用线程睡眠时,它不等待睡眠线程完成并执行 onComplete() 函数
- javascript - 有什么方法可以获取可观察数组的最后 10 个对象
- mongodb - 处理 mongo 上的预定义标签云/标签
- javascript - laravel Livewire 电线:点击不触发功能