使用getline函数时遇到问题

时间:2013-12-13 01:03:14

标签: c++

我正在尝试两次使用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)然后继续的事实。

1 个答案:

答案 0 :(得分:2)

此前的代码是否读取cin的任何输入?如果是这样,它可能不会消耗cin中的最新换行符,而是将其留给此函数中的getline()

例如,如果您的代码中有类似的内容:

int option;
std::cout << "Enter option: << std::endl;
std::cin >> option;

if (option == 1)
     addBook();

然后该代码将在输入中留下悬空换行符,getline()中的addBook()将会读取它。

相关问题