获取线跳到下一个 cin 并跳过上一个 cin
Getline jump on next cin and skip the previous cin
我正在尝试使用 getline(),但在输入第一个记录光标后,不要等待第二个国家名称,它会跳过并跳到大写名称上。我的错误在哪里。如果我输入
国家: 印度
首都:德里
首都: 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() 等待下一个国家/地区,但现在它正在等待每个国家、首都和首都条目之后。意味着我进入
国家:印度//按回车键//等待,我在这里
按回车键 首都:德里//按回车键//等待,我在这里按回车键
: 32323//按回车键//等待,我在这里按回车键
相同5次。
因为cin >>
不会使用您键入的数字后面的行尾字符。这些字符保留在输入缓冲区中。下次调用 getline()
时,它会找到换行符,并假定用户只需按 Enter 即可输入空字符串。
相关文章:
- 为 c++ cin 上的输入数无效生成错误消息
- 类模板上一个特定函数的未解析外部符号
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- std::cin >>上的参数无效
- 如何查看提升集中<cpp_int>的下一个和上一个元素
- 我想知道我将如何实现 + 运算符重载.我已经从我上一个问题中计算出 += 运算符重载
- 如何删除上一个节点?
- 插入指针数组会删除上一个结果
- 助推器使用上一个DMATRIX后,XGDMATRIXCREATEFROMMAT失败
- 尝试指向链表中的上一个节点
- 如何在C++中找到上一个星期一的日期
- 与上一个线程具有相同ID的线程同步
- 是否可以在同一设备缓冲区上一个接一个地调用 OpenCL 内核?
- 只有在上一个线程返回后才启动一个新的"wxThread"
- 我如何使用上一个块的哈希链接2个块
- C libcurl-使用上一个卷曲的响应作为参数到另一个卷曲的参数
- 您为什么要在班上一个结构
- sfml pollevent,每个新图像都会删除上一个图像
- 获取线跳到下一个 cin 并跳过上一个 cin
- 当一长串字符传递给第一个 cin 时,为什么不暂停第二个 cin 上的输入?