在c++中实现文件的读写
当设计到与文件相关的操作时
首先要代码的开头添加一个标准库
#include
通过该库内含的构造函数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#include 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#include 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#include 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; }
最终得到以下结果



