在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;
- }
最终得到以下结果