Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cin>&燃气轮机;无法使用getline() #包括 #包括 使用名称空间std; int main(){ 字符串str; 智力年龄; 年龄; 难道_C++_Getline_Cin - Fatal编程技术网

C++ cin>&燃气轮机;无法使用getline() #包括 #包括 使用名称空间std; int main(){ 字符串str; 智力年龄; 年龄; 难道

C++ cin>&燃气轮机;无法使用getline() #包括 #包括 使用名称空间std; int main(){ 字符串str; 智力年龄; 年龄; 难道,c++,getline,cin,C++,Getline,Cin,在cin>>age;之后,流中仍然有一个换行符,它为名称提供了一个空字符串 您只需在获得年龄后添加另一个getline()call并丢弃结果即可解决此问题。另一个选项是调用cin.ignore(大号码“\n”),其中BIG_NUMBER是MAX_INT或其他什么。在cin>>age;之后,流中仍然有一个换行符,它为名称提供了一个空字符串 您可以通过在获得年龄并丢弃结果后添加另一个getline()调用来解决此问题。另一个选项是调用cin.ignore(BIG_NUMBER,\n');,其中BIG

cin>>age;
之后,流中仍然有一个换行符,它为名称提供了一个空字符串


您只需在获得年龄后添加另一个
getline()
call并丢弃结果即可解决此问题。另一个选项是调用
cin.ignore(大号码“\n”)
,其中
BIG_NUMBER
是MAX_INT或其他什么。

cin>>age;
之后,流中仍然有一个换行符,它为名称提供了一个空字符串

您可以通过在获得年龄并丢弃结果后添加另一个
getline()
调用来解决此问题。另一个选项是调用
cin.ignore(BIG_NUMBER,\n');
,其中
BIG_NUMBER
是MAX_INT或其他东西。

getline()
不适用于
int
或任何数字。它的定义如下:

#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";
}
因此,它接受字符串和
char*
;而不是数字。

getline()
不适用于
int
或任何数字。它的定义如下:

#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";
}

因此,它接受字符串和
char*
;而不是数字。

定义“不工作”。你不喜欢的事情发生了什么?定义“不工作”。你不喜欢的事情发生了什么?
getline()
用于名称,而不是整数。仔细看看这个问题。数字也是字符:)
getline()
用于名称,而不是整数。仔细看看这个问题。数字也是字符:)调用
getline()
两次可以解决问题,但更有效的解决方案是在调用真正的
getline()之前调用
cin.ignore()
@ildjarn:好主意。我会把它添加到我的答案中。你的
忽略
调用需要一个分隔符。@BillyONeal:哦,是这样的。它默认为EOF,而不是newline!这就是为什么我首先选择
getline()
的原因。8v)
std::cin.ignore(std::numeric\u limits::max(),'\n');
调用
getline()
两次可以解决这个问题,但更有效的解决方案是在真正的
getline()之前调用
cin.ignore()
@ildjarn:好主意。我会把它添加到我的答案中。你的
ignore
调用需要一个分隔符。@BillyONeal:哦,是这样的。它默认为EOF,而不是newline!这就是我为什么选择
getline()
首先.8v)
std::cin.ignore(std::numeric_limits::max(),'\n');