cin.get()缓冲区中的左换行字符
newline character left in the cin.get() buffer
我在我的代码中使用cin.get(input).ignore(INT_MAX, 'n');
。在while循环中调用该语句以选择菜单中的一个选项。虽然我使用忽略链接cin.get()
为我正在读取的每个输入,有时一个换行符仍然在cin缓冲区中,我应该按一个额外的'Enter'去while循环的正常过程中选择一个选项。我该怎么做才能解决这个问题?
int Menu::getChoice(int menuNum) // getChoice() returns users menu choice
{
int i = 0;
char input;
while(0 == i) // As long as users choice not valid
{
cout << "Make your choice: ";
cin.get(input).ignore(INT_MAX, 'n');
if (!cin.good())
{
cin.clear();
cin.ignore(INT_MAX, 'n');
}
i = atoi(&input);
if (menuNum == 1)
{
if (i < 1 || i > 2)
{
cout << "Not a valid choice!" << endl;
i = 0;
}
}
}
return i;
}
如果我理解正确的话,这个问题是,有时为了使代码移动到cin,并获得输入的赋值,需要两个新的行字符。如果这是正确的,那么如果您替换:
cin.get(input).ignore(INT_MAX, 'n');
与这个:cin >> input;
问题会解决的
相关文章:
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- 一次读取一个字符的文件,直到使用 read(2) 和 write(2) 换行符
- 读取文件内容时未定义的字符,文件末尾没有换行符
- 每隔n个字符打印一行换行符
- 如果字符串是从字符类型中给定的,则该字符串是否可以包含换行符
- 便携式字符换行符
- 如何从字符数组中去除换行符
- 使用 getchar() 输入字符的最有效方法,就像 cin 中没有换行符和空格字符一样C++
- C++:抓取文件的每个字符,忽略换行符和空格
- 检查字符是否为换行符
- 基准换行字符与std::endl
- 在字符数组中插入新的换行符
- 正在搜索换行符'n'字符串对象中的字符
- cin.get()缓冲区中的左换行字符
- 如何在c++中从字符串中获得子字符串到第一个换行字符
- 剥离换行字符的方法
- 在无符号字符数组中读取充满字符串(用换行符分隔)的文件(反之亦然)的最快方法是什么?
- 使用CFile检查换行符(换行字符)
- 程序来查找空白和换行字符的数量
- 有和没有换行字符的睡眠行为