Tôi đang làm việc trong trường và đang đập đầu vào tường ngay bây giờ cố gắng tìm ra lý do tại sao chương trình của tôi không hoạt động như tôi muốn!Vấn đề C++ liên quan đến getline() và vòng lặp
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;
}
Chương trình này hoạt động tốt ở vòng đầu tiên, nhưng tôi gặp sự cố khi getChoice() == true và khối thời gian lặp lại lần thứ hai. Trong vòng lặp thứ hai, chương trình yêu cầu tôi nhập lại câu, nhưng sau đó chỉ cần nhảy tới "Bạn có muốn làm lại không?" mà không cho phép người dùng nhập hoặc xuất kết quả của các hàm properWords() và chữ hoa() thích hợp. Tôi nghi ngờ rằng có điều gì đó về getline mà tôi không hiểu, nhưng tôi vẫn chưa tìm thấy nó thông qua googling của tôi. Bất kỳ trợ giúp nào ngoài đó?
chỉnh sửa: đã xảy ra lỗi trong giải thích ban đầu của tôi.
đầu vào gì bạn đang sử dụng? Nếu có nhiều hơn một dòng trong luồng đầu vào của bạn, getline() sẽ lấy dòng tiếp theo mà không cần đợi thêm đầu vào. – Otaia
Về cơ bản, những gì tôi đang cố gắng làm là cho phép người dùng nhập một câu đầy đủ được chuyển đến hai hàm thành viên. Tôi muốn người dùng có thể nhập một câu mới vào lần lặp tiếp theo ... v.v. – user3468711
Tôi thích câu hỏi này bởi vì chuỗi so với đầu vào char là một trong những điều đi lên rất nhiều người khi họ bắt đầu viết mã bằng C/C++ (hoặc nhiều ngôn ngữ khác cho vấn đề đó). –