为什么getline不接受输入

Why getline not accepting input

本文关键字:输入 不接受 getline 为什么      更新时间:2023-10-16

从代码顶部开始工作,但令人惊讶的是,最后一个 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 << "nn" ;
     }
  }
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" ;
     }
  }
}

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>