cout<<"Please input a choice: n= ";
cin>>n;
getchar(); //这里加个getchar()就好了。 cin>>n后会键入一个回车,这个回车暂存在缓存中,如果不滤掉,cin.get()函数就会读到而导致函数读入结束。因此,不能读入数据。
你好,最好能写明什么错误。这样回答人数会多些。毕竟大家都不想一行一行读代码。
应该是
cin.get(addr,20);的问题
取定长的c字符串可以用cin>>setw(20); cin>>name;
可以截取20个字符,缺点是超出长度的字符也会显示。
如果不想显示。只能自己用单个字符输入来实现了。
比如for(int i = 0; i < 20; i++) name[i] = getchar();
大概这样写个函数也不复杂。
问题原因:
由于流中存在'\n', 而cin遇到回车或空格就结束输入。
问题解决:
在每个子函数的cin.get(param_list)之前,使用cin.get(), “吃掉”缓冲区的'\n'即可
太多了 能把问题清楚化最好