字符串输入-忽略第一行 C++和java中的输入问题,如果我们在整数之后输入一个字符串,它将跳过它,转到下一个语句。

字符串输入-忽略第一行 C++和java中的输入问题,如果我们在整数之后输入一个字符串,它将跳过它,转到下一个语句。,c++,C++,string name; int age; cout<<"Enter age"; cin>>age; cout<<"Enter name"; getline(cin,name); cout<<name; cout<<age; getch(); 字符串名; 智力年龄; 运力; cout读取整数值时,为完成该行而引入的[Enter]仍在流中,并且getline(cin,name)读取该[Enter] 要解决问题,首先: 字符串名;

    string name;
int age;
cout<<"Enter age";
cin>>age;
cout<<"Enter name";
getline(cin,name);



cout<<name;
cout<<age;

getch();
字符串名;
智力年龄;
运力;

cout读取整数值时,为完成该行而引入的[Enter]仍在流中,并且
getline(cin,name)
读取该[Enter]

要解决问题,首先:

字符串名;
智力年龄;
运力;
cin.ignore(std::numeric_limits::max(),'\n');//忽略所有输入

CUT< P>我只回答C++,因为只有C++代码存在。

std::getline
将使用上一个
操作符>
在输入流上留下的换行符,因此返回

一个简单的解决方法是使用忽略输入行上的所有剩余字符
cin.ignore(std::numeric_limits::max(),'\n')

使用
std::getline

#include<limits>
// ....
string name;
int age;
cout<<"Enter age";
cin>>age;

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

cout<<"Enter name";
getline(cin,name);
#包括
// ....
字符串名;
智力年龄;
运力;
cin.ignore(std::numeric_limits::max(),'\n');
库特
假设用户输入整数5。这就是输入流的样子:

请注意,上述情况可能有所不同。用户可以输入整数,然后输入空格字符。这两种情况同样有效

也就是说,用户输入值并点击return提交<代码>运算符>>
已格式化,因此将使用整数,但一旦找到新行或空格提取将停止。输入操作后,新行仍应在流中

现在,让我们看看
name
的内容:

执行
getline
时,一旦在流中找到新行,它将停止搜索新输入。先前提取的新行仍在流中,因此输入立即停止。什么也没提取出来

幸运的是,我们可以使用
ignore
方法从流中丢弃新行:

std::cin >> age;
std::cin.ignore(); // ignore the next character

std::getline(std::cin, age);
默认情况下,当给定0个参数时,
std::cin.ignore
将丢弃流中的下一个字符


这里有一个

我没有看到这里的java代码我希望你不要只是标记java,因为它是一个流行的标记…当你有基于行的输入时,在你还没有读到的第一个数字后面有字符或新行,它不会因为你要求更多数据而消失。我给它贴上java标签是因为java也有同样的问题…谢谢xorguy的帮助…谢谢pow的帮助…谢谢你的帮助。。。
std::cin >> age;
std::getline(std::cin, name);
5\n
...
\n
...
\n
"Bruce Wayne"\n
std::cin >> age;
std::cin.ignore(); // ignore the next character

std::getline(std::cin, age);