编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。编写程序lab11_2.cpp使用int main(itn argc ,char*argv[])函数中的参数传递操作的文件名,声明ofstream的对象对文件进行操作,使用geiline成员函数读入数据,使用cout输出字符到文件
时间: 2024-02-18 16:01:08 浏览: 53
好的,下面是lab11_2.cpp的代码实现:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main(int argc, char* argv[]) {
if (argc < 2) {
cout << "请在程序名后输入文件名!" << endl;
return 1;
}
ifstream fin(argv[1], ios::binary | ios::in);
if (!fin) {
cout << "文件打开失败!" << endl;
return 1;
}
stringstream ss;
string line;
int line_num = 0;
while (getline(fin, line)) {
ss << ++line_num << " " << line << endl;
}
fin.close();
ofstream fout(argv[1], ios::binary | ios::out | ios::trunc);
if (!fout) {
cout << "文件打开失败!" << endl;
return 1;
}
fout << ss.str();
fout.close();
cout << "添加行号成功!" << endl;
return 0;
}
```
这个程序会检查是否有输入文件名,如果没有则输出错误信息并退出程序。如果有输入文件名,则使用ifstream对象以二进制方式打开文件进行读取,然后将每一行前加上行号后存入stringstream中。接着关闭读入的文件,再以二进制方式打开文件进行写入,将stringstream中的内容写入文件中,最后输出添加行号成功的信息。注意在写入文件时使用了ios::trunc模式,这意味着写入文件时会先清空文件的内容。
阅读全文