c++ - 为什么 cin.getline() 不起作用(C++)?

标签 c++ input output cin

#include <iostream>
using namespace std;


int main(int argc, char** argv) {

char text[200];
int input;


cin>>input;
if (input == 1)
{
    cin.getline(text, 200);
    cout<<text<<"\n";

}
else if(input == 0)
{
    cout <<"You entered a 0";
}

return 0;
}

我正在尝试制作一个小程序,用户输入 1 或 0。如果用户输入 1,那么他可以输入整个句子并将其存储在文本的 char 数组中。我的问题是,当我将 cin.getline() 放入 if 语句中时,它不再起作用。这是为什么?

谢谢

最佳答案

并不是 cin.getline() 不起作用。它完全按照要求执行:读取文本行直到下一个换行符。碰巧 cin >> input; 读取了一些数字,然后将第一个非数字输入留在输入缓冲区中 - 这通常是换行符,除非您键入的内容不是数字.

您可以通过调用cin.ignore()来解决这个问题,它将“读取直到下一个换行符的所有内容并将其丢弃”。

理想情况下,您应该决定是否要使用 cin >> 还是 cin.getline(),并使用其中之一,但这意味着然后读取文本字符串并在代码中转换为数字,如果您是新手,这可能比您实际想要的要复杂一些。

关于c++ - 为什么 cin.getline() 不起作用(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536789/

相关文章:

c++ - 如何在不更改 C++ 中的值的情况下更改 json 对象名称?

c++ - 为 Windows cmd 添加 argc

c++ - 简单的用户输入验证不起作用

python - 从 Python 读取输入并在 while 循环中打印出来

java - 读取和写入多个 HashMap

c++ - OpenGL:使用球坐标在球体上映射纹理

c++ - 用于自定义容器的 STL 兼容迭代器

javascript - 传递通过 Javascript 设置的隐藏表单元素

file - 使用 gradle 4 登录到文件

Java - 从 BIN 文件读取数组或将数组写入 BIN 文件