C++ cin.getline及getline()用法详解
下面先看下C++cin.getline用法,具体内容如下所示:
使用C++字符数组与使用string对象还有另一种不同的方式,就是在处理它们时必须使用不同的函数集。例如,要读取一行输入,必须使用cin.getline而不是getline函数。这两个的名字看起来很像,但它们是两个不同的函数,不可互换。
与getline一样,cin.getline允许读取包含空格的字符串。它将继续读取,直到它读取至最大指定的字符数,或直到按下了回车键。以下是其用法示例:
cin.getline(sentence,20);
getline函数使用两个用逗号分隔的参数。第一个参数是要存储字符串的数组的名称。第二个参数是数组的大小。当cin.getline语句执行时,cin读取的字符数将比该数字少一个,为null终止符留出空间。这样就不需要使用setw操作符或width函数。以上语句最多可读取19个字符,null终止符将自动放在数组最后一个字符的后面。
下面的程序演示了getline函数的用法,它最多可以读取80个字符:
//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.补充:C++getline()的两种用法
getline():用于读入一整行的数据。在C++中,有两种getline函数。第一种定义在头文件
中,是istream类的成员函数;第二种定义在头文件 中,是普通函数。 第一种:在
中的getline()函数有两种重载形式: istream&getline(char*s,streamsizen); istream&getline(char*s,streamsizen,chardelim);作用是:从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,如果遇到delim标识符或字数达到限制,则读取终止。delim标识符会被读取,但是不会被保存进s对应的数组中。注意,delim标识符在指定最大字符数n的时候才有效。
#includeusingnamespacestd; intmain() { charname[256],wolds[256]; cout<<"Inputyourname:"; cin.getline(name,256); cout< 输入
Kevin
Hi,Kevin,morning输出
Kevin
Hi
Kevin第二种:在
中的getline函数有四种重载形式: istream&getline(istream&is,string&str,chardelim); istream&getline(istream&&is,string&str,chardelim); istream&getline(istream&is,string&str); istream&getline(istream&&is,string&str);用法和上第一种类似,但是读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
is:表示一个输入流,例如cin。
str:string类型的引用,用来存储输入流中的流信息。
delim:char类型的变量,所设置的截断字符;在不自定义设置的情况下,遇到'\n',则终止输入。
#include#include usingnamespacestd; intmain(){ stringstr; getline(cin,str,'A'); cout<<"Thestringwehavegottenis:"< 输入
i_am_A_student_from_Beijing
输出
Thestringwehavegottenis:i_am_.
Thestringwehavegottenis:_student_from_.
总结
以上所述是小编给大家介绍的C++cin.getline及getline()用法详解,希望对大家有所帮助,也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。