std :: getline在代码中使用了两次,跳到第二条getline

时间:2019-03-25 04:47:53

标签: c++ cin

在我的用于存储笔记的程序中,我两次使用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:

0 个答案:

没有答案