【发布时间】:2020-08-08 19:49:19
【问题描述】:
#include <iostream>
#include <ios>
#include <limits>
using namespace std;
int main() {
int x;
char str[80];
cout << "Enter a number and a string:\n";
cin >> x;
cin.ignore('\n');
cin.getline(str,80);
cout << "You have entered:\n";
cout << x << endl;
cout << str << endl;
}
我在使用忽略功能时遇到问题
cin.ignore('\n'); 导致输出我必须多次按 Enter 才能打印语句(以减少字符数),否则它会从输出中的字符串中删除一些初始字符(以防万一更多的字符)。像这些:
在使用 cin.ignore(); 时会产生正确的输出。
使用其中任何一个不一样吗'\n' 丢弃换行符,() 空括号也丢弃最后一个字符(或此处的换行符)。
另外,我们什么时候应该使用cin.getline() 和getline(cin, )?
【问题讨论】:
-
请不要用文字的图片,只用文字。有足够的格式选项使它看起来不错。关于您的代码,作为像您这样的交互式程序的一般方法,请专门使用
getline()。如果您需要一个整数,请仍然读取一行,然后解析该行。如您所见,在格式化 (>>) 输入和未格式化输入之间切换是不值得的。
标签: c++ arrays string cin getline