C++:ifstream通过getline读取文件会忽略最后一行空行

getline是读取文件的常用函数,虽然使用简单,但是有一个较容易被忽视的问题,就是文件最后一行空行会被忽略。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void readWholeFileWithGetline(string fileName)
{
	string tmpStr;
	int i = 0;
	ifstream iReadFile(fileName);
	if(iReadFile.is_open())
	{
		while(getline(iReadFile, tmpStr))
		{
			i++;
			cout<<i<<"{"<<tmpStr<<"}"<<endl;
		}
	}
}

int main()
{
	readWholeFileWithGetline("./abc.txt");
	return 0;
}

 假设文件abc.txt内容为

123
456
789

最后没有空行

运行程序输出:

1{123}

2{456}

3{789}

 可以看到读到了3行完整的内容

 假设文件abc.txt内容为

123
456
789

最后有一行空行

运行程序输出:

1{123}

2{456}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 16:50:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 16:50:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 16:50:03       82 阅读
  4. Python语言-面向对象

    2024-01-13 16:50:03       91 阅读

热门阅读

  1. Nodejs软件安装

    2024-01-13 16:50:03       61 阅读
  2. 【算法笔记】回溯专题

    2024-01-13 16:50:03       56 阅读
  3. 设置弹窗随鼠标位置移动

    2024-01-13 16:50:03       54 阅读
  4. css height:单位 % 高度 跟vh高度区别

    2024-01-13 16:50:03       56 阅读