getline cin忽略输入中的第一个数字

时间:2016-02-29 07:21:03

标签: c++

我正在学习C ++,目前我正在尝试使用cin和getline进行输入。然而,getline以某种方式忽略了输入中的数字。我尝试过放置cin.clear()和cin.ignore(),但问题仍然存在。有什么我做错了吗?

这是我的代码:

string test;
int main()
{
    std::cout << "Please enter a date: ";
    std::cin >> test;
    std::getline(std::cin, test);
    cout << test << endl;
}

这是输出:

Please enter a date: 1 January 2015
 January 2015
Press any key to continue . . .

2 个答案:

答案 0 :(得分:2)

除非您想阅读某些内容,否则不要使用std::cin

#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;

int main()
{
    string test; // Don't use global variable unless it is necessary.
    std::cout << "Please enter a date: " << std::flush;
    // std::cin >> test; // remove this harmful line
    std::getline(std::cin, test);
    cout << test << endl;
    cout << "Press any key to continue . . ." << endl;
    return 0;
}

答案 1 :(得分:0)

getline无法追加。你正在读取字符串直到它到达空格,然后用其余部分覆盖它。

std::cin >> test; //test == "1"
std::getline(std::cin, test); //test == " January 2015"