1
我想要使用getline(),但是在输入第一个记录之后,不要等到第二个国家名称跳过并跳到大写名称上。我的错误在哪里?如果我进入Getline跳到下一个cin并跳过前一个cin
国家:印度
首都:新德里
资本:57382
它把这些值没有任何问题,但光标不会等待下一次直接进入人均值后资本跳跃国家。
#include<iostream.h>
#include<conio.h>
#include <string.h>
struct country
{
char nm[30];
char capital[30];
float income;
};
void main()
{
country c[5];
clrscr();
for(int i=0; i<5 ; i++)
{
cout << "\n Country's name : ";
cin.getline(c[i].nm, 30);
cout << "\n Country's capital :";
cin.getline(c[i].capital,30);
system("cls");
cout << "\n Per capita income :";
cin >> c[i].income;
}
我通过添加cin.ignore修改的码();
for(int i=0; i<5 ; i++)
{
cout << "\n Country's name : ";
cin.getline(c[i].nm, 30);
cin.ignore();
cout << "\n Country's capital :";
cin.getline(c[i].capital,30);
cin.ignore();
cout << "\n Per capita income :";
cin >> c[i].income;
cin.ignore();
}
但之后getline()等待下一个国家,但它现在正等待国家,资本和Capita的每个条目。意味着我进入
国家:印度//按回车键//等待,我按在此处输入
首都:新德里//按回车键//等待,我按在此处输入
人均: 32323 //新闻输入//等待,然后我按这里输入
相同的5次。
我讨论了这个问题,并添加了cin.ignore(),但现在出现了一个不同的问题,请看编辑过的帖子 – Vishal
@Vishal你错过了'ignore()'调用。应该只有一个,它应该在* first *'getline()'调用之前。此外,最好是'std :: cin >> std :: ws'而不是'ignore()',因为你只是试图放弃空格。 – 0x499602D2
@ 0x499602D2感谢您的指导,它的工作原理。 – Vishal