只是想比較兩個用戶定義的向量,看看他們是平等的,當前代碼:中而濫用CIN循環對於int分配
vector<int> ivec1, ivec2; //vectors, uninitialized
int temp1;
cout << "Enter integers to be stored in ivec1." << endl;
while(cin >> temp1) //takes input from user and creates new element in the vector to store it
{
ivec1.push_back(temp1);
}
int temp2;
cout << "Enter integers to be stored in ivec2." << endl;
while(cin >> temp2) //same as above with different vector
{
ivec2.push_back(temp2);
}
if(ivec1 == ivec2)
cout << "ivec1 and ivec2 are equal!" << endl;
else
cout << "ivec1 and ivec2 are NOT equal!" << endl;
到目前爲止,這讓我賦值ivec1就好了,但作爲我通過輸入一個字母來退出while循環,使cin失敗,它跳過第二個塊。出於好奇心,我試着在第一個while循環之後放入其他cin語句,並忽略它們。
強迫cin失敗會導致程序忽略所有其他呼叫或其他問題嗎?如果是這樣,我怎麼才能讓這個程序做我想做的事?
截圖爲您的觀賞樂趣: http://img695.imageshack.us/img695/2677/cinfailure.png
* PS。有temp1和temp2只是我試圖弄清楚如果使用相同的int爲兩個分配循環導致的問題,無論如何,我只是想我會離開它那裏
感謝您對ctr-z的建議,我不知道! – user863492
@Martin:的確如此;但在這種情況下,無論如何都應該從2個獨立的文件中讀取輸入。 – Schnommus
根據兩個EOF創建一個程序,無法從管道中的單個輸入饋送...在很多方面比一個哨兵醜。不幸的是,他最潔淨的哨兵這裏可能是一條空白的路線,爲了檢測它,需要使用getline。一個字符串,然後創建一個istringstream,然後嘗試int解析,並明確檢查行上的尾隨垃圾。 iostreams可能很凌亂! –