C++ skipping on cin.getline
C++ skipping on cin.getline
我的程序输入字符有问题
#include <iostream>
using namespace std;
int main()
{
int choise;
char word[81];
cin >> choise;
cout << "enter the word:" << endl;
cin.getline(word, 81);
return 0;
}
Visual Studio 将输入打开到"Choise"但是跳过 cin.getline(如果我用 gets_s 替换它,情况也是一样的)。
我试着写cin.get();在"获取线"之前...但是程序没有得到第一个字符(如果我输入"aa",它会得到"a")我能做什么?谢谢
这是因为您输入了一个换行符,以便程序接受您为choice
输入的整数,该换行符不会从缓冲区中提取,而是在下一个输入操作中读取。getline
调用读取剩余的换行符,并对此感到满意。
有几种方法可以解决您的问题。第一个也是最明显的是对word
变量使用 std::string
,然后使用正常的输入运算符>>
因为这将跳过前导空格(包括换行符)。
另一种解决方案是告诉输入流ignore
直到并包括换行符。链接的引用有一个关于如何做到这一点的示例。
输入整数后,按回车键,此输入输入将留在缓冲区中,并用作 getline 的下一个输入,计算机会假设您已完成。在语句之前添加此行getline
并重新编译它。 cin.ignore()
.
相关文章:
- Getline(cin,str)的奇怪输出
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- 由于 getline(cin,s) 导致的 SIGABRT 错误
- 为什么我们需要在getline(cin,string)之前使用cin.ignore()
- 在C 中使用两个GetLine(CIN,S)
- 使用 getline(cin,n) 输入;没有打印第一个输入,我没有使用 CIN >> 在任何地方输入
- 为什么必须键入 getline(cin,字符串)两次
- 无法删除 txt 文件中 getline(cin , (变量)) 之后的下一行
- getline(cin,_string);
- 当使用getline(cin,string)时,CIN会自动获取其值而不询问
- 我的程序跳过getline(cin,CustInfo),进入CustomerInfo函数中的City.我该怎么修
- Using cin AFTER getline(cin, string)
- 如何正确使用"getline(cin, input);"
- 关于getline(cin,string)的C++快速问题
- getline(cin,s1)没有提示我输入
- 为什么 cin.ignore() 后面的 getline(cin, var) 不读取字符串的第一个字符?
- 为什么getline(cin,string_name)在我第一次在循环中使用它时会创建一个空字符串
- getline(cin,aString)接收输入而不输入另一个值
- getline(cin,string)与cin.ignore()一起不工作