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');