gpt4 book ai didi

c++ - Getline 跳转到下一个 cin 并跳过上一个 cin

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:08 28 4
gpt4 key购买 nike

我正在尝试使用 getline() 但在输入第一个记录光标后不要等待第二个国家/地区名称,它会跳过并跳转到首都名称。我的错误在哪里。如果我输入

国家:印度
首都:德里
Capita: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() 之后等待下一个国家,但它现在在每次输入国家、首都和人均之后等待。表示我输入

Country:India //Press enter //waiting and I pressed enter here
Capital:Delhi //Press enter //waiting and I pressed enter here
Capita: 32323 //Press enter //waiting and I pressed enter here

同样的5次。

最佳答案

因为 cin >> 不会消耗您输入的数字后面的行尾字符。这些字符保留在输入缓冲区中。下一次调用 getline() 时,它会找到换行符并假定用户通过简单地按回车键输入了一个空字符串。

关于c++ - Getline 跳转到下一个 cin 并跳过上一个 cin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101962/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com