C++ getline函数用法详解
虽然可以使用cin和>>运算符来输入字符串,但它可能会导致一些需要注意的问题。
当cin读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例:
cin>>namel;
可以输入"Mark"或"Twain",但不能输入"MarkTwain",因为cin不能输入包含嵌入空格的字符串。下面程序演示了这个问题:
//Thisprogramillustratesaproblemthatcanoccurif //cinisusedtoreadcharacterdataintoastringobject. #include#include //Headerfileneededtousestringobjects usingnamespacestd; intmain() { stringname; stringcity; cout<<"Pleaseenteryourname:"; cin>>name; cout<<"Enterthecityyoulivein:"; cin>>city; cout<<"Hello,"< 程序输出结果:
Pleaseenteryourname:JohnDoe
Enterthecityyoulivein:Hello,John
YouliveinDoe请注意,在这个示例中,用户根本没有机会输入city城市名。因为在第一个输入语句中,当cin读取到John和Doe之间的空格时,它就会停止阅读,只存储John作为name的值。在第二个输入语句中,cin使用键盘缓冲区中找到的剩余字符,并存储Doe作为city的值。
为了解决这个问题,可以使用一个叫做getline的C++函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
getline函数如下所示:
getline(cin,inputLine);其中cin是正在读取的输入流,而inputLine是接收输入字符串的string变量的名称。下面的程序演示了getline函数的应用:
//Thisprogramillustratesusingthegetlinefunction //toreadcharacterdataintoastringobject. #include#include //Headerfileneededtousestringobjects usingnamespacestd; intmain() { stringname; stringcity; cout<<"Pleaseenteryourname:"; getline(cin,name); cout<<"Enterthecityyoulivein:"; getline(cin,city); cout<<"Hello,"< 程序输出结果:
Pleaseenteryourname:JohnDoe
Enterthecityyoulivein:Chicago
Hello,JohnDoe
YouliveinChicago到此这篇关于C++getline函数用法详解的文章就介绍到这了,更多相关C++getline函数内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!