C++整行读入

问题

使用cin>>T;之后再使用getline(cin,line);发现程序执行完cin>>T之后就结束了,跳过了getline(cin,line)的执行,单步之后发现line是空值。

原因

cin>>T回车之后,T获取了值,但是'\n'被getline获取了,因为getline是以'\n'来判断一行的结束的,所以读到'\n'马上就结束了,也就没有读取到真正的那行字符串。

解决办法

在getline(cin,line)之前添加一句:cin.ignore();忽略之前的'\n',这样getline就恢复正常了。

char way, s[1050];
cin >>way;
cin.ignore();
cin.getline(s, 1050);//后面的数字是最长输入长度。
//对于char* / char[]  
char s[1001];  
cout<<"Please input char[]:"<<endl;  
cin.getline(s, 1000);//iostream下的函数, 第二个参数表示允许的最大输入长度  
cout<<"Output:"<<endl<<s<<endl<<strlen(s)<<endl;   

//对于string  
string ss;  
cout<<"Please input string:"<<endl;  
getline(cin, ss); //这个getline函数在<string>头文件下  
cout<<"Output:"<<endl<<ss<<endl<<ss.length()<<endl;  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 浅谈C++常用输入输出 在编写C++程序的时候,经常因为输入输出头疼,所以在这里做一个小结,记录一下常用的输入输出...
    MinoyJet阅读 9,159评论 0 6
  • 第一章 计算机与C++编程简介 C++程序6个阶段编程 ->预处理->编译->连接->装入->执行1.程序在编译器...
    rogertan30阅读 9,848评论 0 1
  • 亲爱的不二 有个地方叫做稻城 我要和我心爱的人 一起去那里 看蔚蓝的天空 看白色的雪山 看金黄的草地 看一场秋天的...
    拾贝轩阅读 1,378评论 0 0
  • 二月河的这部作品让我看得过瘾。能把历史写得这样精彩、惊心动魄,而又不显得艰辛,不得不佩服二月河的笔力。当然,小说明...
    故纸旧人阅读 1,382评论 0 0
  • 亲眼看一次喜马拉雅山是我一直的梦想。曾去过两次西藏,第一次因为时间不够没有安排,第二次特别安排了,却不幸碰...
    AngeIa安老师阅读 4,511评论 0 1

友情链接更多精彩内容