不同的IO处理操作,分别定义在三个独立的头文件中:
头文件 | 类型 |
---|---|
iostream | istream, wistream 从流读取数据 |
iostream | ostream, wostream 向流写入数据 |
iostream | iostream, wiostream 读写流 |
fstream | ifstream, wifstream 从文件读取数据 |
fstream | ofstream, wofstream 向文件写入数据 |
fstream | fstream, wfstream 读写文件 |
sstream | istringstream, wistringstream 从 string读取数据 |
sstream | ostringstream, wostringstream 向string写入数据 |
sstream | stringstream, wstringstream 读写string |
其中,iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。宽字符的类型与函数以w开头。
ifstream与istringstream均继承istream,故cin等方法一样适用于ifstream与istringstream。
重要对象/方法 | 说明 |
---|---|
iostate | 机器相关的类型,指示流的条件状态 |
badbit | 流已崩溃 |
failbit | IO操作失败 |
s.fail() | 若处于failbit 或 badbit,则为true |
eofbit | 已经到达文件结尾 |
s.eof() | 若处于 eofbit,则为true |
goodbit | 没毛病 |
s.clear() | 条件状态复位,返回类型void |
s.clear(flag) | 条件状态回复到flag,返回类型同上 |
s.setstate(f) | 条件状态设置为f |
s.rdstate() | 返回当前条件状态,类型为iostate |
int main(){
int a;
while(cin>>a)
cout<<a<<endl;
return 0;
}
一个简易的输入检查
goodbit:0000 0000;
badbit :0000 0001;
eofbit :0000 0010;
failbit:0000 0100;
cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);
头文件:fstream
包含类型:
模式名 | 含义 |
---|---|
in | 以读的方式打开 |
out | 以写的方式打开 |
app | 从文件末尾开始写 |
ate | 打开文件时定位到末尾 |
trunc | 截断文件 |
binary | 二进制读写 |
#include <iostream>
#include <istream>
#include <fstream>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
ifstream input;
ofstream output("text2.txt");
string s;
input.open("text1.txt");
if(input){
while(input>>s){
output<<s<<" ";
cout<<s<<endl;
}
}
return 0;
}
如果调用open失败,或在关闭已经打开文件的文件流前调用open,failbit置位。
如果一个文件流到达作用域末尾,则自动调用close()。
包含类型:
成员