美文网首页
C++文件输入输出

C++文件输入输出

作者: Lacie_喵 | 来源:发表于2019-02-20 17:34 被阅读0次

    题目

    给出一个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

    相关文章

      网友评论

          本文标题:C++文件输入输出

          本文链接:https://www.haomeiwen.com/subject/xgscsqtx.html