请高手们帮帮我

时间:2022-07-14 14:10:13
istream& operator>>(istream& input,Telem& T) 
{
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 所以只有第一次可以让你输入 

或者 楼主 你可以设定为一定性输入 

#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 所以只有第一次可以让你输入 

或者 楼主 你可以设定为一定性输入 

#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();