我的程序输入字符有问题
#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;
}
视觉工作室打开输入&#34;选择&#34;
但跳过cin.getline(如果我用gets_s替换它就一样)。
我试着写
cin.get();在&#34; getline&#34; ...之前
但是程序没有得到第一个字符
(如果我把&#39; aa&#39;它得到&#39; a&#39;)
我能做什么?
感谢
答案 0 :(得分:1)
因为你为程序输入了一个接受你为choice
输入的整数的换行符,所以不会从缓冲区中提取该换行符,而是在下一个输入操作中读取它。 getline
调用会读取剩余的换行符,并对此感到满意。
有几种方法可以解决您的问题。第一个也是最明显的是使用std::string
作为word
变量,然后使用普通输入运算符>>
,因为它将跳过前导空格(包括换行符)。
另一种解决方案是将输入流告诉ignore
,直到并包含换行符。链接参考有一个如何做到这一点的例子。
答案 1 :(得分:0)
输入整数后按Enter键,此输入输入将保留在缓冲区中,并用作getline的下一个输入,计算机假定您已完成。
在getline
语句之前添加此行并重新编译它。
cin.ignore()
。