永发信息网

C++中getline(cin,str)语句后面直接跟cin输入语句为何会出现错误

答案:4  悬赏:60  手机版
解决时间 2021-03-09 03:54
  • 提问者网友:动次大次蹦擦擦
  • 2021-03-08 10:37
getline(cin,str);cin>>tap;为什么第一条语句读入回车后没法完成第二条语句tap的输入...

getline(cin, str);

cin >> tap;
为什么第一条语句读入回车后没法完成第二条语句tap的输入

最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-03-08 10:52
getline 默认遇回车结束,但是会抛弃回车符,所以直接跳到第二个输入流上了 准备接受!
全部回答
  • 1楼网友:野味小生
  • 2021-03-08 12:37
你想说的是循环输入时遇到的问题吧, 看一下下面的代码,是朋友问我的,直接拿来用吧,循环部分有注释 #include #include using namespace std; void strmcpy(char* &s,char* t,int m) { strcpy(s,&t[m-1]); } int main() { int repeat,m; char *s,*t; cin>>repeat; cin.get(); for (int i=0;i>m; cin.get(); //cin>>m;输入流还有一个空格,下一次循环时getline()会直接接收,getline和get默认终止字符delim是'\n',所以会出现问题 if(m>strlen(t)) { cout<<"error input"<
  • 2楼网友:西风乍起
  • 2021-03-08 11:44
添加一行 getline(cin.str) cin.get(); cin>>tap; 或者不要getline 直接 cin>>str; cin>>tap; 也是可以的
  • 3楼网友:我住北渡口
  • 2021-03-08 11:19
你的str 是 string 类型的吧,你在用getline()的时候如果没有定义一个终止条件符,那么他的 他就会吧整个一行的或者是直到把str 储存满的字符存进去, 而我们知道,string 类型的长度很长, 几乎有多少就能存多少。所以你用getline的话就意味着会把一整行的字符存到 str 中。 而直到下一行开始,才会把字符存进 tap中
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯