读取文件每一行的由4个整数组成的数组
时间: 2024-09-28 18:15:56 浏览: 20
在C++中,读取文件并将其内容解析为每行四个整数组成的数组,你可以使用`std::ifstream`来打开文件,然后逐行读取并转换。这里有一个简单的示例:
```cpp
#include <fstream>
#include <sstream>
#include <vector>
std::vector<std::array<int, 4>> readFourIntsPerLine(const std::string& filename) {
std::vector<std::array<int, 4>> result;
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("Failed to open the file");
}
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::array<int, 4> numbers;
if (!(iss >> numbers[0] >> numbers[1] >> numbers[2] >> numbers[3])) {
// 如果不能完全读入四个整数,这通常意味着文件格式不正确
throw std::runtime_error("Failed to parse line as four integers");
}
result.push_back(numbers);
}
file.close();
return result;
}
int main() {
try {
auto data = readFourIntsPerLine("input.txt"); // 替换为你的文件名
for (const auto& row : data) {
// 打印或处理每行的四个整数
for (int num : row) {
std::cout << num << " ";
}
std::cout << "\n";
}
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
这段代码首先定义了一个函数`readFourIntsPerLine`,它接受一个文件名作为参数,尝试打开文件、逐行读取并在内建的`istringstream`中解析每个字符串为四个整数。如果无法成功转换,它会抛出异常。在主函数中,我们调用这个函数并处理返回的数据。
**相关问题--:**
1. 如何处理文件不存在的情况?
2. 文件中的数据格式错误如何处理?
3. 如何优化处理大量数据时的性能?
4. 如果文件非常大,应该如何处理?