我正在尝试两次使用getline()
函数来存储一本书的标题,然后在两个单独的变量中存储作者的名字,我稍后会将其用于将此信息写入文件。但是,每当我运行程序并到达我要添加书籍的部分时,它会跳过书名的输入阶段并直接跳到作者(它闪烁,让我知道我可以为作者输入但它从不眨眼标题)。
void LMS_Processing::addBook()
{
fstream listingsFile;
string title = "";
string author = "";
system("cls");
listingsFile.open("listing.books", ios::out | ios::app);
cout << "LMS: Edit - Add Book" << endl;
cout << endl;
cout << "Book Title: ";
getline(cin, title);
listingsFile << title << ':';
cout << endl;
cout << "Author: ";
getline(cin, author);
listingsFile << author << ':';
listingsFile << "in" << endl;
listingsFile.close();
}
基本上,按照代码的程序打印“书名:”,然后忽略我放getline(cin, title)
然后继续的事实。
答案 0 :(得分:2)
此前的代码是否读取cin
的任何输入?如果是这样,它可能不会消耗cin
中的最新换行符,而是将其留给此函数中的getline()
。
例如,如果您的代码中有类似的内容:
int option;
std::cout << "Enter option: << std::endl;
std::cin >> option;
if (option == 1)
addBook();
然后该代码将在输入中留下悬空换行符,getline()
中的addBook()
将会读取它。