输入/输出流---打开,读写文件操作

打开一个文件,需要打开与文件相关联的流

ifstream---用于文件的istream流(读取文件)

ofstream---用于文件的ostream的流(写文件)

fstream---用于文件的iostream(既可以写也可以读)  文件流必须与某个文件相关联,然后才可以使用

打开一个文件

cout << "please enter input file name !" << endl;
    string name;
    cin>>name;
    ifstream ist(name.c_str());//函数c_str()是string类的一个成员函数,将string对象转换为更为底层的C风格字符串,                             if(!ist)    cout<<"can;t open input file"<<endl;


写文件,通过流来实现:

cout<<"please enter name of output file:";
    string oname;
    cin>>oname;
    ofstream ost(oname.c_str());
    if(!ost) cout<<"can;t output file"<<endl;

还可通过open()和close()操作显示的打开和关闭文件

 

如何从一个文件中读取一些实验结果,并将其描述为内存数据对象?

11.txt里面:

0 60.7

1 60.6

2 60.3

3 59.22

。。。

D:\\11.txt,写入D:\\12.txt


 

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

    struct Reading{
        Reading(int hh,double tt):hour(hh),temperature(tt){}
        double temperature;
        int hour;
    };
    void error(string str){
        cout<<str<<endl;
    }

int main()
{
    //读11.txt文件,打开11.txt文件,通过流对象,ist是流对象
    cout << "please enter input file name !" << endl;
    string name;
    cin>>name;
    ifstream ist(name.c_str());//函数c_str()是string类的一个成员函数,将string对象转换为更为底层的C风格字符串,                             if(!ist)    cout<<"can;t open input file"<<endl;
    if(!ist) error("can't output file");
    
    //写入12.txt文件,也是要先打开12.txt文件,通过流对象,ist是流对象
    cout<<"please enter name of output file:";
    string oname;
    cin>>oname;
    ofstream ost(oname.c_str());
    if(!ost) error("can't output file");

    //读取11.txt文件里的内容通过输入流对象,放入到temps向量中
    vector<Reading> temps;
    int hour;
    double temperature;
    while(ist>>hour>>temperature){
        if(hour<0||20<hour){
            error("hour out of range");
        }
        cout<<"hour:"<<hour<<",temperature:"<<temperature<<endl;
        temps.push_back(Reading(hour,temperature));
        cout<<"~~"<<endl;
    }
    
    //将temp中的内容写入输出流对象中
    for(int i=0;i<temps.size();++i)
    {
        ost<<'('<<temps[i].hour<<','<<temps[i].temperature<<')'<<endl;
    }
    return 0;

}


 处理错误:如何使用流状态的例子

读取一个整数序列存入vector中,字符‘*’表示序列结束;例如:1 2 3 4 5 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值