【发布时间】:2019-12-09 00:14:14
【问题描述】:
我正在尝试在 C++ 上进行猜字游戏。但是,每当我尝试添加带有空格的单词时,都不应该将其添加到单词库向量中。但是,当我添加一个单词时,它只是无限循环,让我们说“你好”。代码不完整,但我对它为什么无限循环感到困惑。
#include <iostream>
#include <cstdlib>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
void menu(vector<string> arr) {
int menuInput;
cout << "-----MENU-----\n";
while(menuInput != 4){
cout << "1. PLAY GAME\n";
cout << "2. ADD A WORD\n";
cout << "3. OUTPUT ALL AVAILABLE WORDS\n";
cout << "4. QUIT\n";
cout << "USER CHOICE:\n";
cin >> menuInput;
switch(menuInput) {
case 1:
break;
case 2:
{
string addWord;
cout << "ADD A WORD:\n";
getline(cin, addWord);
int n = addWord.length();
bool finalAdd = true;
char addWordArray[n];
strcpy(addWordArray, addWord.c_str());
int i;
for(i = 0; i < n; i++) {
if(addWordArray[i] == ' ') {
finalAdd = false;
}
}
if(finalAdd == true) {
arr.push_back(addWord);
cout << "Word added!\n";
} else {
cout << "Word not added, word had a space.\n";
}
}
break;
case 3:
break;
case 4:
break;
}
}
}
int main() {
vector<string> arr {"APPLE", "BANANA", "ORANGE", "PINEAPPLE"};
menu(arr);
}
【问题讨论】:
-
您在尝试调试程序后发现了什么?
-
它对我有用,但我必须在接受菜单选项后清除其余的 cin 缓冲区,以便添加字 getline 不会抓住换行符。 onlinegdb.com/B1l9XFGj6r
标签: c++