一、stream输入
1、getline
istream& getline ( istream &is , string &str , char delim );
对于getline(cin,s),getline默认情况下以回车('\n')作为结束符。在遇到终结符delim后,delim会被丢弃,不存入str中。但是在开头遇到结束符时会立即返回。在下次读入操作时,将在delim的下个字符开始读入。
也存在成员函数如:cin.getline(char* cha,int num,char f); 向cha中输入num个字符,输入过程中达到num个数或者提前遇到f字符,输入结束。
2、>>
会忽略开头的空白符(空格、‘\n’、tab);遇到空白符返回,每次读入一个词。而在输入结束时,结束符会留在输入流中。所以>>读取完之后如果又要用用其他方法读取(如getline),需要先ignore掉'\n'等。
二、stream处理
1、cin.ignore(),cin,ignore(count), cin(count, delim)
cin.ignore()、cin.ignore(1)忽略一个字符;cin.ignore(1024,'\n'),在遇到换行后(换行符也会被舍弃)或者忽略了1024个字符后不再忽略。
返回值均返回stream。
2、cin.peak()
返回下一个将读入的字符,但是不是真的读出来,下一次读取结构便是这个字符。用于测试。如果不能读入任何字符,返回EOF。
三、steam状态
1、cin.clear()
清除所有错误标志,使得可以重新输入。通常与cin.sync()配合使用(先clear标志,再sync),cin.sync()用来清空cin缓冲区里面未读取的数据。(cout.flush()是将输出缓冲区数据刷新到设备或文件中,与此不同)