c++ cin和cin.getline的问题

int a;
char array[10];
cin >> a;
cin.getline(array,10);
如上,输入一个a后,程序立马就结束了,而没有执行cin.getline(),这是为什么?

cin>>a,读取了你数的a之后,还读取了回车符。
这个回车在缓冲区,而cin.getline第一个字符读取的就是回车,立刻判断结束。

想要解决,直接在cin>>a,后面加一个getchar();即可
温馨提示:内容为网友见解,仅供参考
无其他回答

C++读入字符串(cin,get,getline)
cin.get(char ,int)与cin.getline(char ,int)函数很相似,唯一不同的地方在于:get函数不从流中抽取换行符,换行符仍保留在流中,因为其后往往要跟cin.get(),用来抽取换行符。

C++的cin和cin.getline()该如何理解?代码在里面
你的理解是对的。cin有时会将换行符遗留在输入缓冲区 cin会忽略输入的空白字符,如换行,空格等,而getline则老老实实的读取到第一个换行符。面对这样的输入:"\\nabc\\n"cin会得到"abc"getline会得到""

有关c++中cin.getline的问题
你的程序没有什么大问题,就是输入的内容没写到数组中去。。。#include <iostream>void output (const char * ch,int n=1);int main(void){using std::cin;using std::cout;using std::endl;char * ch=new char[20]; \/\/动态数组的创建memset( ch, 0, 20 ); \/\/初始化cout<<"Pl...

c++中cin,cin.get()的区别
楼主你说的“cin程序就无法执行”,那是因为cin会自动帮你忽略空格,回车等不可见字符,你判断c等不等于回车,这是永远都不可能相等的,因为cin把回车吃掉了。cin.get()函数的功能就是getchar()的功能,能一个一个获取字符,包括不可见字符,这两者只能用来获取字符。scanf()也可以用来都如不可见字符...

c++ cin和cin。getline的问题
楼主 我弄了你的代码 发现 没问题 这样可能与你的编译环境有问题 大概是因为输入输出流是到一定时候会刷新 然后做相应的操作 大概是你输入数据之后没到那个时间 在getline之后 刚好到了那个时间 然后一起输出到屏幕去 你试一下在在语句之间做一下其他操作 看会不会改变 ...

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用 ...
但通常使用在`string`类型中,其语法与`cin.getline()`相似。两者的主要区别在于`getline()`属于`string`流,而`cin.getline()`属于`istream`流,它们是不同的函数。总之,在处理输入数据时,C++提供了多种方法,选择合适的函数取决于具体需求。确保理解每个函数的功能和用法对于高效编程至关重要。

C++中cin.get和cin.getline的区别是什么?
getline(str,Size):str将得到'\\0',并将'\\n'删除掉,不置实效位,不关闭输入。所以对于cin.getline来说空行是合法的输入,且不会影响下面的输入处理。至于使用那个更好,可能因人习惯不同而不同,仁者见仁智者见智。对于我们编程来说,总希望能有更好的容错性,即便用户输入了不合理的输入,程序也...

关于C++中cin的几个问题
1.cin.getline是读入一行字符,比如:include <iostream.h> void main(){ char str[20];cout<<"Input :";cin.getline(str,20);cout<<str<<endl;} 当输入:abd cdrasdf g的时候就会输出:abd cdrasdf g。2.cin.get()第一个用法,是读入一个字符。include <iostream.h> void main(){ cha...

C++中二维数组cin.getline问题
因为cin>>n;之后还留有一个换行字符,会被接下来的getline读取为一个空字符。在cin>>n;后加上 cin.ignore(INT_MAX,'\\n');把换行字符跳过就可以了。

C++问题 为什么cin.getline不能允许用户输入呢
\/\/在cin>>add_command的时候要打一个回车\/\/cin.getline默认以换行符为结束标志\/\/要消耗掉前面的换行符需要多调用一次,如下所示即可cin.getline(Status, 50);cin.getline(Status, 50);

相似回答