用二进制方式打开指定的一个文件,在每一行前加行号,并且将结果输出到控制台上。
时间: 2024-09-28 21:12:44 浏览: 41
在C++中,你可以使用`fstream`库中的`binary`模式打开一个文件,然后使用`setw`和`setfill`函数来插入行号。下面是一个简单的示例,说明如何完成这个任务:
```cpp
#include <fstream>
#include <iostream>
#include <iomanip>
int main() {
if (argc != 2) { // 检查是否提供了文件名作为命令行参数
std::cerr << "Usage: program_name file_to_process.txt" << std::endl;
return 1;
}
std::string filename = argv[1];
std::ifstream inputFile(filename, std::ios::binary); // 以二进制模式打开文件
if (!inputFile.is_open()) {
std::cerr << "Failed to open the file: " << filename << std::endl;
return 1;
}
size_t lineNumber = 1;
std::string line;
std::cout << std::dec; // 将输出精度转换为十进制
std::cout << std::setw(6) << std::setfill('0'); // 设置每个数字占6位,不足的地方用0填充
while (std::getline(inputFile, line)) {
// 在每一行前面加上行号
std::cout << lineNumber << ": ";
std::cout.write(line.c_str(), line.length()); // 写入行内容
std::cout << "\n"; // 结束当前行
lineNumber++;
}
inputFile.close();
return 0;
}
```
在这个例子中,我们首先检查是否提供了文件名,然后以二进制模式打开文件。接着逐行读取文件内容,在每行前面添加行号,然后输出到控制台。注意,输出的是十六进制表示的行号,因为`std::istream::write`默认以二进制形式写入。如果你想显示十进制行号,需要使用`std::cout << lineNumber << ": "`的形式直接输出。
阅读全文