详解C++ cin.getline函数
cin
虽然可以使用cin和>>运算符来输入字符串,但它可能会导致一些需要注意的问题。
当cin读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。
例: //Thisprogramillustratesaproblemthatcanoccurif //cinisusedtoreadcharacterdataintoastringobject. #include#include //Headerfileneededtousestringobjects usingnamespacestd; intmain() { stringname; stringcity; cout<<"Pleaseenteryourname:"; cin>>name; cout<<"Enterthecityyoulivein:"; cin>>city; cout<<"Hello,"< 预期结果:
Pleaseenteryourname:JohnDoe
Enterthecityyoulivein:Chicago
Hello,JohnDoe
YouliveinChicago实际结果:
Pleaseenteryourname:JohnDoe
Enterthecityyoulivein:Hello,John
YouliveinDoe在这个示例中,用户根本没有机会输入city城市名。因为在第一个输入语句中,当cin读取到John和Doe之间的空格时,它就会停止阅读,只存储John作为name的值。在第二个输入语句中,cin使用键盘缓冲区中找到的剩余字符,并存储Doe作为city的值。
cin.getline()
cin.getline允许读取包含空格的字符串。它将继续读取,直到它读取至最大指定的字符数,或直到按下了回车键。
此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为'\n'。
这个函数有三个参数,其语法为:cin.getline(字符指针(char*),字符个数N(int),结束符(char));
第一个参数为第一个读取的字符的位置,通常为数组名。
第二个参数为读取的字符的个数。
第三个参数是结束符,可以省略,省略则默认为回车键结束。
例: //ThisprogramdemonstratescinTsgetlinefunction //toreadalineoftextintoaC-string. #include、 usingnamespacestd; intmain() { constintSIZE=81; charsentence[SIZE]; cout<<"Enterasentence:"; cin.getline(sentence,SIZE); cout<<"Youentered"< 输出结果:
Enterasentence:Tobe,ornottobe,thatisthequestion.
YouenteredTobe,ornottobe,thatisthequestion.可以看到,使用cin.getline函数输入带有空格的字符串。
在网络编程中,写一个简单的回射程序时,可以使用cin.getline来输入数据。
#defineMAX_LINE10000 charSendBuffer[MAX_LINE]; cin.getline(SendBuffer,sizeof(SendBuffer));以上就是详解C++cin.getline函数的详细内容,更多关于cin.getline函数的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。