CIN>>不适用于getline()

时间:2011-11-30 19:57:44

标签: c++ getline cin

#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输入?

2 个答案:

答案 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*;不是数字。