Я работаю в школьном задании и сейчас избиваю голову против стены, пытаясь понять, почему моя программа не ведет себя так, как мне бы хотелось!Проблемы на C++, связанные с getline() и петлей
int main(){
string input;
char choice;
bool getChoice(char);
string getInput();
CharConverter newInput;
do{
cout << "Please enter a sentence.\n";
getline(cin, input);
cout << newInput.properWords(input) << endl;
cout << newInput.uppercase(input) << endl;
cout << "Would you like to do that again?\n";
cin >> choice;
} while (getChoice(choice) == true);
return 0;
}
Эта программа отлично работает на первом круге, но у меня возникают проблемы, когда getChoice() == верно, и делать в то время как блок петельные во второй раз. Во втором цикле программа просит меня снова ввести предложение, но затем просто перескакивает на «Хотите сделать это снова?» без ввода пользователем или вывода результатов правильных функций word() и uppercase(). Я подозреваю, что есть что-то о getline, которые я не понимаю, но мне еще предстоит найти его в моем поиске. Любая помощь там?
изменение: произошла ошибка в моем первоначальном объяснении.
Какой вклад вы используете? Если в вашем входном потоке имеется более одной строки, getline() будет захватывать следующую строку, не дожидаясь большего ввода. – Otaia
В основном, что я пытаюсь сделать, это позволить пользователю ввести полное предложение, которое передается двум функциям-членам. Я хочу, чтобы пользователь мог ввести новое предложение на следующей итерации ... и так далее. – user3468711
Мне нравится этот вопрос, потому что string vs. char input - это одна из вещей, которая вызывает множество людей, когда они сначала начинают кодирование на C/C++ (или на многих других языках, если на то пошло). –