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;
}