IO类
>>与<<以及getline函数支持所有的输出输出流,getline用法:string s;getline(cin,s);
1.iostream头文件
- IO对象不可拷贝或者赋值,因此不可以用作函数传参或者返回类型,可以用引用,但不能用const,因为任何读写操作都会改变流的状态;也不可以用一个IO对象去初始化另外一个IO对象;
- 流状态 IO库定义了一种iostate类型,是一种位集合类型,即通过一个二进制数不同位上是1还是0,来代表不同的状态。它包含四种类型的状态,badbit置位表示系统错误,不可恢复,failbit置位表示可恢复的错误,如输入类型错误等,到达文件结束位置时,eofbit和failbit都会被置位,goodbit值为0,表示流未发生错误。cin.good()当所有错误都未置位时返回true;cin.bad()当系统错误返回true;cin.fail()当发生三种任意一个错误都返回true。if(cin>>s)等价于if(!cin.fail())。
- cin.clear()将流复位 cin.rdstate返回当前流状态 cin.setstate()输入流状态,设置为相应的状态
- 进行输出操作时,系统可以将多个cout要输出的内容都放在缓冲区,然后一次写出,提升性能。通过endl可以换行并且刷新缓冲区,cout<<""<<flush刷新缓冲区,不加任何字符,ends刷新缓冲区,并添加空格。
- cin.tie(&cout) 关联两个流,形参是指向ostream的指针。cin.tie()返回指向输出流的指针,如果没有关联任何流,返回空指针。
2.文件的输入和输出
int main ( int argc , char * argv []){string temp ;vector < string > str ;ifstream in( "F:/a.txt" , ifstream :: in ); //还可以in.open("F:/a.txt")if (!in){cout << "err" ;}while ( getline (in, temp )){str . push_back ( temp );}in. close ();auto it = str . begin ();while ( it != str . end ()){cout << * it << endl ;++ it ;}system ( "pause" );return 0;}