這裏是我的C++代碼現在:如何獲取cin循環以停止用戶點擊輸入?
// Prompt user loop
char preInput;
do {
// Fill the vector with inputs
vector<int> userInputs;
cout << "Input a set of digits: " << endl;
while(cin>>preInput){
if(preInput == 'Q' || preInput == 'q') break;
int input = (int) preInput - '0';
userInputs.push_back(input);
}
// array of sums sync'd with line #
int sums[10] = {0};
// Calculate sums of occurance
for(vector<int>::iterator i = userInputs.begin(); i != userInputs.end(); i++){
int currInput = *i;
for(int numLine = 0; numLine < lines.size(); numLine++){
sums[numLine] += lineOccurances[numLine][currInput];
}
}
int lineWithMax = 0;
for(int i = 0; i < 10; i ++)
if(sums[i] > sums[lineWithMax]) lineWithMax = i;
cout << lines[lineWithMax] << endl;
// Clear vector
userInputs.clear();
} while (preInput != 'Q' && preInput != 'q')
不要擔心環路的功能,我只需要它以某種方式運行。 如果用戶鍵入「123」,循環應該將字符1,2,3作爲單獨的元素加載到userInputs中。 按Enter鍵後,循環需要執行while(cin >> preInput){}語句下面的所有代碼,清除userInput向量,然後重複,直到輸入字符Q.這不是發生了什麼事。循環當前寫入的方式,該程序需要用戶輸入,直到用戶點擊Q,輸入本質上什麼都不做。我需要代碼在用戶輸入時執行。我一直在玩這個有一段時間,但我不太熟悉通過cin通過char將數據傳輸到矢量中,所以我不知道如何做到這一點...任何人都可以指向正確的方向嗎?
會改變cin >> preInput到getline工作嗎?或者,這會試圖將值「... 123」作爲一個賦值放入char preInput中?我需要矢量分別接收數字,而不是將所有數字合併爲一個元素。重申一下,如果用戶輸入「123」userInputs [0]應該是1,userInputs [1]應該是2 ...等等。
本質上,唯一需要改變的是while(cin >> preInput){}循環在用戶輸入時必須中斷。