浅析cin.getline,cin.get,cin.ignore,cin.clear用法

    cin.getline()方法连续地从用户终端接受字符,并将字符存入字符型数组message中,直到输入了(maxchars-1)个字符(第maxchars个字符用来存储字符串结尾的NULL字符'\0')或者接受到了回车为止,这终端键入回车键产生一个换行'\n',它被 cin.getline()认为是行输入结尾cin.getline()获得的字符(除了换行符外)被存储到message数组中在返回之前,cin.getline()函数在存储的这些字符后面添加一个NULL字符'\0'。

     cin.ignore(5,'c')   的是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用每抛弃一个字符,它都要计数和比较字符:如果计数值达到5或者被抛弃的字符是'c',则cin.ignore()函数执行终止;否则,它继续等待  它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响比如可以这么用:cin.ignore (1024, '\n');,通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。

     cin.clear用法如果输入发生错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行要清除错误状态,需使用clear()函数此函数带一个参数,它是你将要设为当前状态的标志值,只要将ios::goodbit作为实参。

     GCC4.3编译器是比较符合标准的。测试发现,在使用字符数组而不是string类来描述字符串的情况下,cin.getline()和cin.get()的区别主要在于两点:cin.getline()在读完一行之后会自动把换行符从输入缓冲区里抹掉,而cin.get()不会。而在遇到空行的时候, cin.getline()会真的读入一个空字符串,cin.get()会报错。
这两者的区别是可以加以利用的,比如通过检查 cin.get()的failbit来用空行结束某个输入循环。一般来讲,用cin.get()可能可以更细致地实现一些功能并且便于调试。

你可能感兴趣的:(ios,C++,c,C#)