为什么getline不接受输入

时间:2014-02-28 19:01:56

标签: c++ turbo-c++

从代码顶部开始工作但令人惊讶的是最后一个cin.get(con)不等待输入并终止程序接受任何输入,为什么会发生这种情况,请指导我的代码有什么问题 -

#include<iostream.h>
#include<conio.h>
#include <string.h>
struct country
{
char country[30];
char capital[30];
float income;
};

void main()
{
  country c[3];
  clrscr();
  for( int i=0; i<3 ; i++)
  {
    cout << "\n Country's name : ";
    cin.ignore();
    cin.getline(c[i].country, 30);

    cout << "\n Country's capital :";
    cin.getline(c[i].capital,30);

    cout << "\n Per capita income :";
    cin >> c[i].income;

  }

char ch = 'y';
char cap[30];
int flag = 0;
cin.ignore();
cout << "\n Enter Capital name : ";
cin.getline(cap, 30);

  for(int k=0; k<3 ; k++)
  {
     flag = 0;
     if(strcmp(c[k].capital,cap)==0)
     {
        flag = 1;
     }
     if(flag==1)
     {
        cout<< "\n" << c[k].country << "\t" << c[k].capital << "\t" << c[k].income << "\n\n" ;
     }
  }
char con[30];
cout << "\n Enter Country name : ";
cin.getline(con,30);
  for(int m=0; m<3 ; m++)
  {
     flag = 0;
     if(strcmp(c[m].country,con)==0)
     {
        flag = 1;
     }
     if(flag==1)
     {
        cout  << c[m].capital << "\t" << c[m].income << "\n" ;
     }
  }
}

1 个答案:

答案 0 :(得分:0)

合并cin.operator<<getline会导致奇怪的行为。所以,这个代码应该改变

cout << "\n Country's capital :";
cin.getline(c[i].capital,30);

cout << "\n Per capita income :";
cin >> c[i].income;

可能

cout << "\n Country's capital :";
cin.getline(c[i].capital,30);

char buf[50]; //I don't know how long your floats are
cout << "\n Per capita income :";
cin.getline(buf);
c[i].income = atof(buf);  //#include <cstdlib>