为什么我无法清除输入流?

时间:2015-09-24 03:53:43

标签: c++ stream

defaultConfig {
    applicationId "com.test.app"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"

    renderscriptTargetApi 19
    renderscriptSupportModeEnabled true
}

这是我用来在名为Friend的类中输入名称和生日的代码。在getline之后(接收带有空格的名字和姓氏)我的程序打印出来"请输入出生日期:"然后中止,因为Date类收到的值不是有效日期。

我相信可能来自getline()的尾随新行被卡在流中并被输入到bday变量的int中,该变量是我一直在使用的Date类的实例,但在使用之后:

void Friend::input(std::istream& ins) {
    std::cout << "Please enter a name: ";
    getline(ins, name);
    ins >> std::ws;
    std::cout << "\n\n" << "Please Enter a Birth date in MM/DD/YYYY format: ";
    ins >> bday;
    std::cout<<"\n\n";
}

由于将无效值插入dbay变量,所以没有任何更改,我的程序仍然中止。所以我不清除流,还是其他问题?

编辑:以下是日期的相关代码

cin >> ws; 

要检查的任何值都只是可接受值的数组。

0 个答案:

没有答案