c++ cin getline,cin cin.get cin.getline的区别
CIN,GETS(),GETLINE(),CIN。得到(),CIN。GETLINE () Difference _博客_ CIN CIN . get CIN . GETLINE Difference
Cin:初学C的同学肯定会先遇到cin和cout。这些是C编程语言中的标准iostream对象,包含在文件中。Cin主要用于从标准输入读取数据,标准输入是指终端的键盘。
当我们从键盘输入一个字符串时,我们需要敲击回车键将字符串输入到缓冲区中,然后回车键将被转换成\n,而换行\n也将被存储在cin的缓冲区中并被计为一个字符。如果我们键入字符串123456并按回车键,那么缓冲区中的字节数将是7而不是6。
读取cin数据也会从缓冲区获取数据。当缓冲区为空时,cin成员函数将阻塞等待数据的到来。一旦数据到来,我们将启动cin成员函数来读取数据,因此当我们开始键入空格或回车时,我们将不会启动cin来读取数据。然而,一旦数据被读取,当遇到空格、制表符或换行符时,读取将被中断。
当cin语句读取用户输入的数据时,遇到换行符就停止。换行符不会被读取,而是保留在键盘缓冲区中。当键盘缓冲区为空时,从键盘读取数据的输入语句只等待用户输入值。
#包括iostream
使用命名空间std
int main()
{
夏尔付梓[80];
Cout 请输入您要输入的字符:;
CIN付梓;
cout付梓恩德尔;
系统(“暂停”);
返回0;
}当我们键入一个空格或回车时,它没有被反映出来。空格或回车之前的数据将被忽略。
当我们输入一串字符,然后输入一串带空格的字符时,屏幕只显示空格前的字符串。
指示cin由空格、制表符或换行符分隔。
Cin.getcin.get读取一个字符,并且不删除换行符。
#包括iostream
使用命名空间std
int main()
{
char a;
char b;
a=CIN . get();
CIN . get(b);
cout a , b , endl
系统(“暂停”);
返回0;
}输入b[回车]
显然第二次cin.get()读取第一次输入的回车键。
我们一次输入两次B,系统存储的顺序是bb[ Enter],所以显示第一次B,显示第二次B。
Cin.get()读取一行。
#包括iostream
使用命名空间std
int main()
{
char a;
char array[20]={ NULL };
cin.get(array,20);
CIN . get(a);
cout array (int)a endl;
系统(“暂停”);
返回0;
}回车123[空格][空格]123[制表符]12[回车]
显示cin.get()不会自动删除回车键,可以显示空格和Tab键。
Enter键会停留在缓冲区中,影响下一次操作,可以通过在下一条input语句之前添加input cin.get()语句来解决。
Cin.getline()从标准输入设备的键盘读取一个字符串,并以指定的终止符结束。
#包括iostream
使用命名空间std
int main()
{
char array[20]={ NULL };
cin.getline(array,20);//或者指定终止符,使用下面一行//cin.getline(array,20, \ n );
cout数组endl
系统(“暂停”);
返回0;
}
#包括iostream
使用命名空间std
int main()
{
char array[20]={ NULL };
char b;
cin.getline(array,20);//或者指定终止符,使用下面一行//cin.getline(array,20, \ n );
CIN . get(b);
cout数组, b endl
系统(“暂停”);
返回0;
}
给定的空格是20,只显示19,最后一个终止符。cin.getline()和cin.get()的区别在于cin.getline()没有在输入缓冲区中留下行结束符(比如换行符)。
std命名空间中的一个全局函数getline()是在getline () C中定义的,因为这个getline()函数的参数使用的是字符串string,所以在头文件中声明。
Getline()使用cin从标准输入设备的键盘上读取一行,当遇到以下三种情况时会结束读取操作:
(1)文件的结尾;
(2)遇到行分隔符;
(3)输入达到最大极限。
Gets()gets()是c中的一个库函数,在头文件stdio.h中说明了可以从标准输入设备中无限读取字符串,不会判断上限。它以回车或文件终止符EOF(即-1)结束,所以程序员要保证缓冲区空间足够大,使得读取时不会发生溢出。
转载请联系作者取得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。