2.编写一个程序,读入一个C++语言的源文件,每一行加上行号后保存到另一个后缀为.txt的同名文件中,同时输出到屏幕上。
时间: 2024-02-12 19:07:11 浏览: 76
c++编写的读取两个文件内容并相加读入到另外一个文件中
5星 · 资源好评率100%
好的,这个问题需要一个能够读取文件和写入文件的程序,同时也需要一个能够对每一行加上行号的函数。以下是一个可能的实现,供参考:
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 给字符串加上行号
string add_line_number(const string& line, int line_number) {
return to_string(line_number) + ": " + line;
}
int main(int argc, char* argv[]) {
// 检查参数是否合法
if (argc < 2) {
cerr << "Usage: " << argv[0] << " <filename>" << endl;
return 1;
}
// 打开输入文件
ifstream input_file(argv[1]);
if (!input_file) {
cerr << "Failed to open file: " << argv[1] << endl;
return 1;
}
// 构造输出文件名
string output_filename = argv[1];
size_t dot_pos = output_filename.rfind('.');
if (dot_pos != string::npos) {
output_filename = output_filename.substr(0, dot_pos);
}
output_filename += ".txt";
// 打开输出文件
ofstream output_file(output_filename);
if (!output_file) {
cerr << "Failed to create file: " << output_filename << endl;
return 1;
}
// 逐行读取输入文件并写入输出文件和屏幕
string line;
int line_number = 0;
while (getline(input_file, line)) {
++line_number;
string numbered_line = add_line_number(line, line_number);
output_file << numbered_line << endl;
cout << numbered_line << endl;
}
// 关闭文件
input_file.close();
output_file.close();
return 0;
}
```
这个程序接受一个参数,即输入文件的路径,然后打开输入文件并逐行读取其中的内容。对于每一行,它调用 `add_line_number` 函数给它加上行号,并将结果同时写入输出文件和屏幕。最终,它关闭文件并返回 0 表示成功。注意,这个程序没有进行任何错误处理,实际应用中需要根据需求进行适当的处理,例如对文件不存在、打开失败、写入失败等情况进行处理。
阅读全文