朋友功能,istream重载>>,如果输入空格,则下一个输入会跳过

时间:2015-03-29 13:14:26

标签: c++ overloading friend istream

我正在使用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;
}

0 个答案:

没有答案