Tags

,

之前研究了一点ObjC和php(其实什么大点的东西都没有做),平时C++的作业题都非常水,自以为之前基础不错,结果今早,不对是昨早考试差点因为输入时的一点问题坏了最后两道题…还好最后都AC了。
这里不得不吐槽院机房的IDE。DevC++的DEBUG就是个BUG,我原来用dev从来没有遇见过的bug,Eclipse是学院自己修改过的,一个旧版本,代码提示什么的都没有优化过,快捷键和字体什么的也很莫名其妙,还得自己修改。不过还好题比较水,用不了太多这些,能打字基本就行了…

言归正传,说说C++的标准输入,cin >> 可以解决大部分问题。剩下的可以交给其他的成员函数完成。

int get();
从流中抽取一个字符,并以整数形式输出

get ( char& c );
从流中抽取一个字符,并存在(char) c中

get ( char* s, streamsize n );
从流中抽取字符,以c字符串形式存在s中。最多抽取n – 1个字符。遇到换行符’n’或者输入序列的结束符也会停下来。
注意:如果抽取到了’n’处,’n’是不会被从流中移除的。也就是说,你这时候再从流中抽出一个字符,会得到’n’。(这也是考试是出现一个奇怪错误的原因,害得我调了好久)
如果也想抽取’n’,可以使用getline,这时’n’不留在流中。

get ( char* s, streamsize n, char delim );
和上面的效果基本一样,只不过遇到定界符 delim 时停止。

getline (char* s, streamsize n );
getline (char* s, streamsize n, char delim );

主要就是定界符的处理不一样

有几个有时候很好用的有关输入的istream函数。

gcount ( );
可以返回上一个输入操作,实际抽取的字符数量。

ignore ( streamsize n = 1, int delim = EOF );
可以从流中抽取不需要的字符。(对没错,就是专门用来做这个的,当然其他的函数也能做到…)
第一个参数是最大提取并删去的字符数量。
第二个参数是定界符,遇到这个函数就结束了。
注意,遇到第一个定界符时,这个输入函数就会结束,但第一个定界符也会被取走。

putback ( char c );
顾名思义,放回去一个字符到输入流中。可以用作通过第一个字符判断输入,而不影响之后的提取等操作。