簡體   English   中英

為什么getline不接受輸入

[英]Why getline not accepting input

從代碼的頂部開始工作,但是令人驚訝的是,最后的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" ;
     }
  }
}

組合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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM