在我的用于存储笔记的程序中,我两次使用std :: getline要求用户先输入笔记的标题,然后再询问笔记的正文。运行该程序时,它将跳过第一个getline,直接进入第二个。
我已经尝试过std :: cin,cin.ignore(),cin.sync()和std :: getline。
我总共有三个文件。头文件和类文件,以及主文件。 为了显示什么代码很重要,我仅显示涉及问题的类文件和主文件的片段。
notebook.cpp
// -- snip --
Note Note::create_note() {
Note s;
std::string title;
std::string note;
std::cout << "\nPlease enter the note's title: \n";
std::getline(std::cin, title);
s.set_title(title);
std::cout << "Please enter the note: ";
std::getline(std::cin, note);
s.set_body(note);
std::cout << "Note added!\n\n";
return s;
}
// -- snip --
tuffynotes.cpp
// -- snip --
char choice;
Note n;
// For storing up to 100 notes.
Note notes[100];
int size = 0;
// used for looping until user is done
bool flag = true;
int main() {
while (flag) {
std::cout << "Welcome to TuffyNotes!\n";
std::cout << "[C] Create a note\n[L] List notes\n[V] View note\n[E] Exit\nChoice: ";
std::cin >> choice;
std::cout << "\n";
switch (choice) {
case 'C':
case 'c':
notes[size] = n.create_note();
size++;
break;
// -- snip --
}
}
}
输出显示
Please enter the note's title:
Please enter the note:
什么时候应该先让我输入标题,然后再直接跳到要求输入正文的位置。
Please enter the note's title: