对于C-风格字符串
例如:char info[100];
共有三种方式:
/*
1.cin>>info;
2.cin.getline(info,100);
3.cin.get(info,100);
*/
而对于string对象,有两种方式,例如string str;
/*
1.cin>>str;
2.getline(cin,str);
*/
两个版本的getline()都有一个可选参数,用于指定使用哪个字符来确定输入的边界
/*
cin.getline(info,100,':');
getline(cin,str,':');
*/
下面详细介绍getline()和get()
getline()函数每次读取一行,它通过换行符来确定行尾,但不保存换行符,并用空字符\0替换换行符
get()函数也是通过换行符来确定行尾,但是换行符保留在输入队列。假设我们连续两次调用get():
cin.get(name1,20);
cin.get(name2,20);
由于第一次调用后,换行符将留在队列中,因此第二次调用时看到的第一个字符就是换行符,但是第二次的get()
认为已到行尾,而没有发现任何可读取的内容。如果不借助帮助,get()将不能跨过该换行符。所以有一种方法解决。
cin.get(name1,20);
cin.get();//吃掉换行符
cin.get(name2,20);