如何解决C++中while(cin.get!='\n')吐字符的问题

上代码,上图#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>usingna... 上代码,上图
# include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{

char a[3][3];
char b[3][3];
int i1=0,i2=0,i=0;
char ch;
while(cin.get()!='\n')
cin>>a[i1++];

while(ch=cin.get()!='\n')
cin>>b[i2++];

for(i=0;i<3;i++)
cout<<a[i]<<" ";

cout<<endl;

for(i=0;i<3;i++)
cout<<b[i]<<" ";

return 0;
}

结果如图上,可以知道,cin,get()总是会吞掉一个字符,怎么样才能解决这个问题?
我需要的就是,在两个二维字符数组输入数据,当输入的数据的两个字符串有“ ”(空格)的时候,后一个字符串就会调到二维数组的下一维进行输入,当判断到有回车换行的时候,说明此时要换到下一个二维数组的数据输入了,但是总被吞掉一个字符,怎么解决?
展开
 我来答
kaixingui2012
推荐于2016-07-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6475万
展开全部
char a[3][30];
char b[3][30]; //如果定义成a[3][3]则每行最多只能有两个有效的字符,虽然你看到能正常输出,但已经产生内存越界访问了。

循环改成:
do {
cin>>a[i1++];
} while(cin.get()!='\n') ;

do {
cin>>b[i1++];
} while(cin.get()!='\n') ;
百度网友65ed018
2015-01-19 · 超过16用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:28.1万
展开全部
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
char a[3];
char b[3];
int i1=0,i2=0,i;
char ch;
while((ch=cin.get())!=' ')
a[i1++]=ch;
while((ch=cin.get())!='\n')
b[i2++]=ch;
for(i=0;i<3;i++)
cout<<a[i]<<" ";
cout<<endl;
for(i=0;i<3;i++)
cout<<b[i]<<" ";
}
我改了一下你的代码,不知道你是不是这个意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式