我正在使用istream的友元函数并尝试接受多个输入。但是如果我在第一个输入中输入一个空格,它会错过第二个输入(第二个输入变为空格后输入的内容)并转移到要求第三个输入。 为什么会发生这种情况,如何解决这个问题。我尝试在第二和第三个输入之前使用cin.ignore(),但它不起作用。
class Data
{
private:
char name[20];
char address[30];
char city[15];
long zip;
public:
friend istream& operator>>(istream& is, Data& i);
friend ostream& operator<<(ostream& os, Data& obj);
};
#include "Data.h"
using namespace std;
ostream& operator<<(ostream& os, Data& obj)
{
os << "Name: " << obj.name << endl;
os << "Address: " << obj.address << endl;
os << "City: " << obj.city << endl;
os << "Zip: " << obj.zip << endl;
return os;
}
istream& operator>>(istream& is, Data& obj)
{
cout << "Name: ";
is >> obj.name;
cout << "Address: ";
is >> obj.address;
cout << "City: ";
is >> obj.city;
cout << "Zip: ";
is >> obj.zip;
return is;
}
#include <iostream>
#include "Data.h"
using namespace std;
int main()
{
Data d;
cin>>d;
}