fstream:一行一行的读取文件数据

本文介绍了一种使用C++标准库中的fstream类逐行读取文件的方法,并提供了完整的示例代码。该方法适用于Windows和Linux平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用fstream一行行的读取文件数据。  Windows/Linux均测试通过。


一、代码
#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main(int argc, char*argv[])
{
	ifstream read_file;
	read_file.open("aaa.txt", ios::binary);

	string line;
	while(getline(read_file, line))
	{
		cout<<"line:"<<line.c_str()<<endl;
	}

	return 0;
}


二、文件与输出结果

2.1 文件:aaa.txt



2.2 输出结果


### 删除 CSV 文件的最后一行 在 C++ 中,`fstream` 并不直接支持删除文件中的某一行的操作。这是因为文件流通常是以追加或覆盖的方式写入数据的。如果需要删除 CSV 文件的最后一行,可以通过以下方式实现: 1. **读取整个文件到内存**:将文件的内容逐行读取到一个容器(如 `std::vector<std::string>`)中。 2. **移除最后一行**:从该容器中删除最后一个元素。 3. **重新写回文件**:将修改后的内容重新写回到原始文件。 以下是具体的代码示例: ```cpp #include <iostream> #include <fstream> #include <vector> #include <string> void removeLastLineFromCSV(const std::string& filename) { // 打开输入文件 std::ifstream inputFile(filename); if (!inputFile.is_open()) { std::cerr << "无法打开文件:" << filename << std::endl; return; } // 存储所有行 std::vector<std::string> lines; std::string line; while (std::getline(inputFile, line)) { lines.push_back(line); } inputFile.close(); // 如果文件为空,则无需操作 if (lines.empty()) { std::cout << "文件为空,无须删除任何行。" << std::endl; return; } // 移除最后一行 lines.pop_back(); // 将剩余内容写回文件 std::ofstream outputFile(filename); if (!outputFile.is_open()) { std::cerr << "无法写入文件:" << filename << std::endl; return; } for (size_t i = 0; i < lines.size(); ++i) { outputFile << lines[i]; if (i != lines.size() - 1) { // 非最后一行才添加换行符 outputFile << "\n"; } } outputFile.close(); } ``` #### 关键点说明 - 使用 `std::ifstream` 和 `std::getline` 函数逐行读取文件内容[^1]。 - 利用 `std::vector<std::string>` 来存储每行的数据[^2]。 - 调用 `pop_back()` 方法移除向量中的最后一项[^3]。 - 使用 `std::ofstream` 将更新后的内容写回原文件[^4]。 通过这种方式,可以有效地删除 CSV 文件的最后一行。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值