#include <iostream>
#include <string>
using namespace std;
int main () {
string str;
int age;
cout << "Please enter age: ";
cin>>age;
cout << "Please enter full name: ";
getline (cin,str);
cout << "Thank you, " << str << ".\n";
}
当我使用uperator&gt;&gt;时,为什么函数getline()不起作用?输入整数?什么更适合int输入?
答案 0 :(得分:5)
在cin>>age;
之后,您在流中仍然有一个换行符,它为您提供了一个名称的空字符串。
您可以在获得年龄并丢弃结果后添加另一个getline()
来解决此问题。另一个选择是调用cin.ignore(BIG_NUMBER, '\n');
,其中BIG_NUMBER
是MAX_INT或其他。
答案 1 :(得分:1)
getline()
无法使用int
或任何数字。它定义如下:
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
所以,它需要字符串和char*
;不是数字。