我無法打印出我自己班級的矢量,vector<Data> data;
。C++運算符<<超載未打印出矢量
簡單地說,我工作的一類class Data_proc
,它有下公共構造函數:
explicit Data_proc(const string& n, istream& is)
{
Data temp;
while(is >> temp)
this->data.push_back(temp);
}
我也重載operator<<
打印:
friend ostream& operator<<(ostream& os, const Data_proc& dp)
{
os << "Person: " << dp.name
<< "\nnumber: " << dp.number;
copy(dp.data.begin(), dp.data.end(), ostream_iterator<Data>(cout));
return os;
}
這裏的問題是,代碼編譯時沒有問題,但數據向量中沒有任何內容正在打印輸出到控制檯。然而,當我改變了我的構造函數如下,它的工作原理,部分:
Data temp;
is >> temp;
data.push_back(temp);
但是,正如你可能已經懷疑,這僅僅打印出第一個「對」,並且其餘數據從文件中讀取的是丟棄。我做錯了什麼?爲什麼while
-loop不從文件中讀取數據?任何幫助表示讚賞!如果您需要關於的詳細信息,請告訴我!
編輯:operator>>
數據,在那裏我有string staffName
和vector<int> passCode
:
friend istream& operator>>(istream& is, Data& d)
{
getline(is, d.staffName, '\n');
int temp;
while(is >> temp)
d.passCode.push_back(temp);
return is;
}
我可以粘貼的輸入文件的內容的樣子,如果它也需要一個片段!
編輯2:新增operator<<
爲:
friend ostream& operator<<(ostream& os, const Data& d)
{
os << d.staffName<< "\n";
copy(d.passCode.begin(), d.passCode.end(), ostream_iterator<int>(cout, " "));
return os;
}
編輯3:發新operator>>
:
getline(is, d.staffName, '\n');
string results;
getline(is, results, '\n');
istringstream iss(results);
int val;
while(iss >> val)
d.passCode.push_back(val);
return is;
「數據」的'operator >>'在哪裏?請發佈[mcve]。 – PaulMcKenzie
@PaulMcKenzie我已經添加了'operator >>'。對不起,長碼。 – user3941584
@MikelF你的意思是如何在'main()'中使用'operator >>'? – user3941584