C++写一个循环,一个循环里只读取一行文件的数据,然后将他们相加输出到另一个txt文件中,下一个循环继续读取下一行文件数据。数据文件以空格分隔数字
时间: 2024-10-12 18:14:05 浏览: 18
c++上机实验实验五.doc答案(实现大数相加)
在C++中,你可以使用`std::ifstream`读取源文件,`std::ofstream`写入目标文件,并结合`std::istringstream`解析每个数字。这里有一个简单的示例,假设源文件是每行包含空格分隔的数字:
```cpp
#include <fstream>
#include <sstream>
#include <vector>
void readAndAddNumbers(const std::string &input_filename, const std::string &output_filename) {
std::ifstream input_file(input_filename);
std::ofstream output_file(output_filename);
if (!input_file || !output_file) {
std::cerr << "无法打开文件: " << input_filename << " 或 " << output_filename << std::endl;
return;
}
int sum = 0;
std::string line;
while (std::getline(input_file, line)) {
std::istringstream iss(line);
std::vector<int> numbers;
for (std::string num_str; iss >> num_str; ) {
numbers.push_back(std::stoi(num_str));
}
for (const auto &num : numbers) {
sum += num;
}
output_file << sum << "\n"; // 输出到目标文件
sum = 0; // 清零准备下一轮的累加
}
input_file.close();
output_file.close();
}
int main() {
readAndAddNumbers("source.txt", "output.txt");
return 0;
}
```
这个程序会逐行读取`source.txt`,计算每行数字之和,然后将结果写入`output.txt`。注意,如果源文件有错误的数字格式,`std::stoi`会抛出异常。
阅读全文