1.getline函数用于读取整行字符串。
getline()的原型是istream& getline ( istream &is , string &str , char delim );
参数解释:
(1)istream &is 表示一个输入流,例如cin;
(2)string&str表示把从输入流读入的字符串存放在这个字符串str中;
(3)char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)因此getline函数遇到换行符会自动结束读取操作。
注意:当用getline函数读取字符串时,若缓冲区内有换行符,需要先清除缓冲区中的换行符。
#include<iostream>
using namespace std;
int main()
{
int n;
string str="123";
cin>>n;
getline(cin,str);
cout<<str;
return 0;
}
执行cin>>n后输入回车程序会自动结束。因为程序将缓冲区中的数字读入到内存n的位置处,回车符还停留在缓冲区中,当getline函数读取缓冲区中字符时遇到换行符直接结束,没有读取字符串,相当于空串。
程序执行:
15
为了避免这种问题,可以用cin.ignoe()消除缓冲区中内容,包括换行符。在cin>>n;语句后面加入cin.ignore()函数。
程序执行:
15
buaa
buaa