C++primer(八)标准输入输出(标准IO)

1.IO标准库类型和头文件
iostream:输入输出流
fstream:文件读写
sstream:读取存储在内存中的string类。
这里写图片描述
处于某些原因,IO对象不可赋值或者复制。

文件输出的代码

#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;

istream &f(istream &in)
{
    int a;
    while(in>>a,!in.eof())
    {
        if(in.bad())
            throw runtime_error("IOstream corrupted!");
        if(in.fail())
        {
            cerr<<"bad data ,try again"<<endl;
            in.clear();
            in.setstate(istream::eofbit);
            continue;
        }
        cout<<a<<endl;
    }
    in.clear();
    return in;
}

int main()
{
    cout<<"Input someword: "<<endl;
    f(cin);
    system("pause");
    return 0;
}

文件写入读出

#include"stdafx.h"
#include <iostream>
#include< fstream >
#include< string >
using namespace std;
istream & f( istream & in )
{
string ival;
while( in >> ival, !in.eof()) // 遇到文件结束符之前一直读入数据
{
    if(in.bad()) // input stream is corrupted; bail out, 流是否已被破坏
throw runtime_error("IO stream corrupted");
if ( in.fail() ) // bad input
{
cerr <<" bad date, try again:";
in.clear( ); // reset the stream
in.setstate(istream::eofbit); // 结束死循环
continue;
}
// process input
cout << ival << endl;
}
in.clear();
// 将in中的所有状态值都设为有效状态
return in;
}
int openFile( string fName )
{
fstream fOpen;
fOpen.clear();
fOpen.open(fName.c_str()); // open the file
if ( !fOpen )
{
cerr << " cannot open the file given." << endl;
return -1;
}
string s;
while ( fOpen >> s )
{
f( fOpen ); // 调用f()函数检测从文件中读入数据
cout << s << " ";
}
fOpen.close();
return 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
cout << " input name of file you want to open:\n";
string fName;
cin >> fName;
openFile( fName );
system("pause");
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值