2013-05-12 96 views
1

這是我第一次使用這個網站,所以我會盡我所能來適當地提出我的問題。選擇多個輸入的選項

我正在處理名字和姓氏的名稱類。我遇到的問題是在設置istream運算符>>時,我無法弄清楚如何讓我的程序確定它是否已達到輸入的結尾。例如,如果我只想輸入名字並讓構造函數處理姓。這個當前位代碼將只讀取第一個名字,但是當我給它第一個和最後一個時,它將把它們作爲名字讀取。

istream& operator>>(istream& is, name& e){ 
string f; 
string l; 
is>>f; 
if(is.eof()) 
    { 
     e = name(f); 

    } 
else 
    { 
     e = name(f,l); 
    } 

return is; 
}; 

感謝您的任何幫助提前!

+0

你有沒有兩種輸入方式的例子? – 2013-05-12 07:35:13

回答

0

如果條件只出現檢查eof,無論是否輸入多個名稱,您的條件。

也許你可以將輸入分解到一個數組中並使用sizeof檢查多個名字?

我對istream的運作方式並不完全熟悉,但我希望你覺得這很有用。

+0

雖然這個答案的第一行可能是正確的,但當結果是基於運行時計算出來的東西時,使用'sizeof()'是沒有用的 - 'sizeof()'是在編譯時完成的。 – 2013-05-12 07:52:25