getline(cin,str);cin>>tap;为什么第一条语句读入回车后没法完成第二条语句tap的输入...
getline(cin, str);
cin >> tap;
为什么第一条语句读入回车后没法完成第二条语句tap的输入
C++中getline(cin,str)语句后面直接跟cin输入语句为何会出现错误
答案:4 悬赏:60 手机版
解决时间 2021-03-09 03:54
- 提问者网友:动次大次蹦擦擦
- 2021-03-08 10:37
最佳答案
- 五星知识达人网友:杯酒困英雄
- 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中
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯