数据的输出保存
在c++中实现文件的读写
当设计到与文件相关的操作时
首先要代码的开头添加一个标准库
#include<fstream>
通过该库内含的构造函数foutput进行输出文件
std::ofstream foutput(" ");
这里我们声明一个数组,将数组的内容输出到txt文本中。
int numbers[] = { 1,3,4,5,12312,534,64 };
通过循环遍历的方式将每一个值输出到文件中,这里需要先获取数组的长度。通过sizeof进行计算。
int arr_size = sizeof(numbers) / sizeof(numbers[0]);
循环每一项
for (int i = 0; i < arr_size; i++) {
foutput << numbers[i] << "\n";
}
结束后不要忘记关闭文件
foutput.close();
最后运行代码看下效果
#include<iostream>
#include<fstream>
int main() {
int numbers[] = { 1,3,4,5,12312,534,64 };
std::ofstream foutput("output.txt");
int arr_size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < arr_size; i++) {
foutput << numbers[i] << "\n";
}
foutput.close();
return 0;
}
可以看到最后将数组中的每个元素,按行排列付给foutput进行输出到本地保存为output.txt文件
数据的读入计算
在对数据完成了输出保存之后,我们如何实现数据的读入并计算和呢。
与前面一样,先通过ifstream对文件进行读取
std::ifstream finput("output.txt");
然后我们需要定义初始值计算和存储变量
int sum = 0, temp = 0;
通过遍历,判断非空,计算累加数值
while (!finput.eof()) {
finput >> temp;
sum += temp;
}
打印结果
std::cout << "The total:" << sum << std::endl;
最后也是要关闭文件
finput.close();
完整代码如下:
#include<iostream>
#include<fstream>
int main() {
int numbers[] = { 1,3,4,5,12312,534,64 };
std::ofstream foutput("output.txt");
int arr_size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < arr_size; i++) {
foutput << numbers[i] << "\n";
}
foutput.close();
std::ifstream finput("output.txt");
int sum = 0, temp = 0;
while (!finput.eof()) {
finput >> temp;
sum += temp;
}
std::cout << "The total:" << sum << std::endl;
finput.close();
return 0;
}
结果图如下:
会发现计算的结果多加了一次最后的数字
如果可以修改代码进行判断
#include<iostream>
#include<fstream>
int main() {
int numbers[] = { 1,3,4,5,12312,534,64 };
std::ofstream foutput("output.txt");
int arr_size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < arr_size; i++) {
foutput << numbers[i] << "\n";
}
foutput.close();
std::ifstream finput("output.txt");
int sum = 0, temp = 0;
//while (!finput.eof()) {
// finput >> temp;
// sum += temp;
// temp = 0;
//}
while (true) {
if (finput >> temp) {
sum += temp;
}
else {
break;
}
}
std::cout << "The total:" << sum << std::endl;
finput.close();
return 0;
}
最终得到以下结果