C++文件输入输出

2019-02-20  本文已影响0人  Lacie_喵

题目

给出一个txt文件,里边包含了100件商品的名称,单价,数量,求总共花费多少钱、平均价格,要求以文件输入输出

code

#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>
using namespace std;
int main(){
    string name;
    long price[100],num[100];
    double sum=0;
    long count=0;
    double ave = 0;
    ofstream write;//写 
    ifstream read;//读 
    read.open("detail.txt");
    write.open("detail.txt",ios::app);
    if(read.is_open()){
        cout<<"success"<<endl;
    }else{
        cout<<"fail"<<endl;
    }
    for(int i=0;i<100;i++){
        read>>name;
        read>>price[i];
        read>>num[i];   
    }
    read.close();
    for(int i=0;i<100;i++){
        sum += price[i]*num[i];
        count += num[i];
    }
    ave = sum/count;
    write<<endl;
    write<<sum<<endl;
    write<<fixed<<setprecision(7)<<ave;
    write.close();
    
    return 0;
} 

知识点

1.文件的输入输出

数据类型 描述
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

代码中同时用到了ofsteam、ifstream,所以创建了read、write两个文件对象,可以直接用fstream代替,只创建一个文件对象。
要在C++中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>。

(1)打开文件

从文件中写入或读出数据之前,必须先打开文件。
open()
成员函数:void open(const char* szFileName,int mode)
第一个参数是指向文件名的指针,第二个参数是文件的打开模式标记。
eg:

  fstream file;
  file.open("data.txt");  //不使用模式标记
  fstream file;
  file.open("data.txt",ios::app); //使用模式标记 

模式标记
判断文件打开是否成功,可以看“对象名”这个表达式的值是否为 true,如果为 true,则表示文件打开成功。
is_open()
检查文件是否已经打开。
true 如果文件已打开并与此流对象关联。
false 除此以外。
eof()
判断文件是否为空或者是否读到文件结尾。
more

(2)读出数据

逐行读入
getline(),读取一行的数据,多用来输入字符串。

string str;
getline(infile,str)
//按行读取,遇到换行符时结束

逐个字符读入(忽略回车与空格)

file>>c;
//c即存入文件中的数据的变量,遇回车或空格则停止。

逐个字符读入(包含空格与回车)

file>>noskipws;
file>>c;

noskipws:告诉流在做词法分析时,忽略空白符或者把空白符读入作为一个空白符token。(no-skip-ws。ws,这是一个便利控制符,它只会忽略流中当前位置的一串空白。)

(3)写入数据
int c;
cin>>c;
file<<"I am happy."<<endl;
file<<c<<endl;

可输入常量或变量。如从键盘输入,需先将获取的值存入变量中。

(4)关闭文件

当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。

参考资料:
【1】菜鸟教程,C++
【2】https://www.cnblogs.com/VVingerfly/p/4435898.html

上一篇下一篇

猜你喜欢

热点阅读