getline和cin区别;getline和cin.getline的区别【简单易懂】

getline和cin区别

  1. getline: 按行读取, 一次读取多个字符,直到读满N个,或者遇到指定的结束符(自定义的或者EOF或者换行符,不包括空白符)为止。
    形式:getline(字符指针,字符个数N,结束符);

  2. cin读取的话,遇到结束符(包括空白符)会终止,只读取空白符之前的部分。

例如:

int main()
{
    
    
 string line;
 getline(cin,line);//输入:12 34
 cout<<line<<endl;//输出:12 34
 
 cin>>line;//输入:12 34
 cout<<line<<endl;//输出:12
 
return 0;
}

参考于此:https://blog.51cto.com/pingpeace/202608


getline和cin.getline的区别

cin.getline()是输入流对象的成员函数
getline()是string类的成员函数
先来看一下getline()的使用方法:

#include<iostream>
using namespace std;
int main()
{
    
    
	string str;
	getline(cin,str);
	cout << str;
	return 0;
}

使用getline(),顾名思义就是读取一行,这一行中可以包括空格,我们来看下输入以及输出结果:

abc def ghhgjgh
abc def ghhgjgh

这个程序的作用就是把我们输入的字符串给原封不动的输出出来,包括中间的空格。运行结果的第一行是输入,第二行是输出。
我们再来看一下cin.getline的用法:

#include<iostream>
using namespace std;
int main()
{
    
    
	char str[20];
	cin.getline(str,20);
	cout << str;
	return 0;
}

cin.getline()的参数是一个字符数组以及我们要读取的元素的个数,(如果我们没有特殊要求输入字符的个数的话,那么这个元素的个数我们通常采取声明字符数组的时候的数组的大小)这个程序的作用还是和刚才的一样,把我们输入的字符串给原封不动的输出出来,来看一下输入和输出结果:

abc def hjhj
abc def hjhj

我们可以看到,这个cin.getline()执行的效果和getline()的效果一样,都可以把字符串输出出来,并且可以输出空格,但是相对于getline()来说,cin.getline()在使用的时候,必须传入字符数组,并且还需要指定字符数组的长度,我感觉非常的不方便,有时候我们并不知道我们要操作的字符串到底有多长。

参考于此:https://blog.csdn.net/qq_36554582/article/details/83151897

猜你喜欢

转载自blog.csdn.net/alovelypeach/article/details/113960322
今日推荐