2013-02-12 85 views
-1

舉例來說,我希望使用一組6個數字。但用戶將以這種格式輸入它們。cin創建數組,但忽略CIN上的某些符號

[1 2 3 4 5 6]

是否有來設計它,因此方式[]被忽略或不放置到其中我創建陣列?

就像是要進入1 2 3 4 5 6一切都會好的。如果我要進入[1 2 3 4 5 6],顯然我會遇到問題。有沒有一種方法來定義[]應該忽略或甚至沒有輸入到輸入數組中?

下面即時通訊使用重載操作符,其中我cin信息。前兩個值只是我的二維數組的維度。所以如果我輸入[2 2 5 3 5 3],它只會輸入2 2之後的值,這是我設置的陣列的大小。但我需要處理這些符號[ ],所以他們不衝突。什麼是解決這個問題的最好方法?

friend istream& operator>>(istream& is, Array<T> &array) 
{ 
    int rowX, colY; 
    is >> rowX; 
    is >> colY; 

    array.create(rowX, colY); 

    for(int i = 0; i<array.numRowX(); i++) 
     for(int j = 0; j<array.numColY(); j++) 
     { 
      T data; 
      is >> data; 
      array.setarray(i, j, data); 
     } 

    return is; 
} 
+1

我回答了你的問題,然後你刪除了它。這真是太討厭了。 – 2013-02-12 00:50:03

+0

哎喲廢話抱歉!我的意思是要重述一切我可能沒有看到它:(對不起 – mystycs 2013-02-12 00:51:24

+1

然後只是編輯你的問題,不要刪除它 – 2013-02-12 00:52:15

回答

3

您可以使用變量來讀取要忽略的輸入。如果你簡單地跳過單個字符,這樣的事情應該工作:

char ignoreChar; 

is >> ignoreChar; // Should be a '[' 

// for loop goes here 

is >> ignore; // Shoudl be a ']' 

您可能要添加的if語句,以確保被忽略的字符,其實你希望它是什麼。

或者,您可以將整行讀取爲一個字符串,並從中提取您想要的信息。這被稱爲字符串解析。