{
int y,m,d;
cout<<"请输入姓名(以#结尾):"<<endl;
input.getline(T.name,10,'#');
cout<<"请输入性别(以#结尾 男或女):"<<endl;
input.getline(T.sex,4,'#');
cout<<"编号(以#结尾):"<<endl;
input.getline(T.num,10,'#');
cout<<"工作部门(以#结尾):"<<endl;
input.getline(T.workpart,20,'#');
cout<<"请输入出生日期:"<<endl;
input>>y>>m>>d;
T.birthtime.year=(y>=1900&&y<=2100)?y:1900;
T.birthtime.month=(m>=1&&m<=12)?m:1;
T.birthtime.day=(d>=1&&d<=31)?d:1;
cout<<"参加工作时间:"<<endl;
input>>y>>m>>d;
T.worktime.year=(y>=1900&&y<=2100)?y:1900;
T.worktime.month=(m>=1&&m<=12)?m:1;
T.worktime.day=(d>=1&&d<=31)?d:1;
return input;
}
代码全部放上来太多太多了,以上代码是一个小系统中的一段,我觉得好像没有问题,关键等调试的时候就出问题了,也找不出哪儿有问题。
为什么界面是这样的?为什么没有等我输入性别就直接跳过了?
还有一个问题是信息输入到文件中出现乱码,怎么解决这个问题阿???
6 个解决方案
#1
用插入源代码的方式贴代码。。。。。。。。。。。。
#2
这是因为流的状态
楼主可以在每句getline后面加input.clear()
因为你用了ctrl +z 所以只有第一次可以让你输入
或者 楼主 你可以设定为一定性输入
楼主可以在每句getline后面加input.clear()
因为你用了ctrl +z 所以只有第一次可以让你输入
或者 楼主 你可以设定为一定性输入
#3
回车键残留在输入流中,具体自己看书或者百度。
#4
#include<stdio.h>
int main(void)
{
char ch=97;//a ASCII ,10进制
for(;ch<123;ch++)
printf("%c %d\n",ch,ch);
ch=0x61;//a ASCII ,16进制
for(;ch<0x7B;ch++)
printf("%c %x\n",ch,ch);
return 0;
}
大概就是这样。
#5
楼上,回错地方了,抱歉
#6
input.clear();
input.sync();
#1
用插入源代码的方式贴代码。。。。。。。。。。。。
#2
这是因为流的状态
楼主可以在每句getline后面加input.clear()
因为你用了ctrl +z 所以只有第一次可以让你输入
或者 楼主 你可以设定为一定性输入
楼主可以在每句getline后面加input.clear()
因为你用了ctrl +z 所以只有第一次可以让你输入
或者 楼主 你可以设定为一定性输入
#3
回车键残留在输入流中,具体自己看书或者百度。
#4
#include<stdio.h>
int main(void)
{
char ch=97;//a ASCII ,10进制
for(;ch<123;ch++)
printf("%c %d\n",ch,ch);
ch=0x61;//a ASCII ,16进制
for(;ch<0x7B;ch++)
printf("%c %x\n",ch,ch);
return 0;
}
大概就是这样。
#5
楼上,回错地方了,抱歉
#6
input.clear();
input.sync();