我從作業角度製作了一個自定義類Person,它保存有關人員的信息。Cin參數到自定義類
class Person
{
char* _name;
char* _lName;
char* _department;
int _age, _salary;
public:
Person(char* name, char* lName, char* department, int age, int salary);
Person(void);
~Person(void);
char* getFName(){return _name;};
char* getLName(){return _lName;};
char* getDepartment(){return _department;};
int getSalary(){return _salary;};
friend std::ostream &operator<<(std::ostream &cout, Person &person);
friend std::istream &operator>>(std::istream& is, Person &person);
};
我想要完成的是使用cin以逗號分隔的char *形式將數據流式傳輸到這個類中。
的CIN過載:
std::istream &operator>>(std::istream &is, Person &person)
{
char* tmp="";
is >> tmp;
int i=0;
int number=0;
char** dataArray=new char*;
dataArray[0]="";
while(tmp[i]!= '\0')
{
if(tmp[i]==',')
{
number++;
dataArray[number]="";
}
else
dataArray+=tmp[i];
i++;
}
person._name=dataArray[0];
person._lName=dataArray[1];
person._department=dataArray[2];
person._salary=(int)dataArray[3];
person._age=(int)dataArray[4];
return is;
}
然而,程序停止,並顯示錯誤,在;
is >> tmp;
我之前沒有操縱過istreams,錯誤可能是由於錯誤的推理。 幫助,將不勝感激。
'tmp'指向一個不能讀取數據的字符串''「''。在任何地方你都會使用'std :: string'而不是'char *'更好。 – 2013-02-14 15:04:54
注意到,非常感謝:) – Nattfrosten 2013-02-14 15:42:40