我正在嘗試使用cin
在bool類型的數組中輸入數據。如果給出的輸入類似0111100010001000
它不是爲所有迭代運行(在我的輸入中爲16),它會終止並打印一些垃圾值,但如果給出如0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0
那樣的輸入,它將按預期工作。bin的cin的意外行爲
#include<cstdio>
#include<cstring>
#include<iostream>
#define FRND 2001
using namespace std;
int main(){
bool mutualFriend[FRND][FRND];
int noOfFriends = 0;
cin >> noOfFriends;
for (int i = 0; i < noOfFriends ; i++){
for (int j = 0; j < noOfFriends; j++){
cin >> mutualFriend[i][j];
}
}
for (int i = 0; i < noOfFriends ; i++){
for (int j = 0; j < noOfFriends; j++){
cout << mutualFriend[i][j] << " ";
}
cout << endl;
}
return 0;
}
cin.clear()
可以解決我的問題。
請解釋爲什麼在第一種情況下會跳過循環。
順便說一下,如果每行的大小在編譯時是已知的,可以使用數組'std :: bitset',爲此實際提供了一個合適的提取操作符。 –