我正在学习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 . . .
答案 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"