#include <iostream> #include <fstream> #include <stdlib.h> #include <cassert> #include <string> using namespace std; void printTxt(string file); int main(int argc, char* argv[]) { //路径名不能有空格 argv 字符串数组 二维数组 string filename = argv[1]; printTxt(filename); return 0; } void printTxt(string file) { ifstream infile; infile.open(file.data()); //将文件流对象与文件连接起来 assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行 string c; int i = 0; while (true) { i++; getline(infile, c); if (infile.eof()) break; cout << i << ":" << c << endl; } infile.close(); //关闭文件输入流 }改正以上代码
时间: 2024-01-13 14:04:59 浏览: 83
在上述代码中,需要加上头文件 `#include <string>`。同时,需要在函数 `printTxt` 中加上判断输入文件是否存在的语句,例如:
```c++
void printTxt(string file) {
ifstream infile(file);
if (!infile) {
cerr << "Error: Failed to open file: " << file << endl;
exit(1);
}
...
}
```
同时,在主函数中需要判断命令行参数是否足够,例如:
```c++
int main(int argc, char* argv[]) {
if (argc < 2) {
cerr << "Error: Missing command line argument for input file." << endl;
exit(1);
}
...
}
```
这样做可以确保程序在处理文件时不会出现错误。
阅读全文