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