cin.getline 不使用 switch 语句

cin.getline Not working with switch statement

本文关键字:switch 语句 getline cin      更新时间:2023-10-16

这是我程序中的一段代码,cin.getline 不适用于 switch 语句,但没有 switch 语句,它可以工作,当我将其与 switch 语句一起使用时,它只是跳过输入所以在我的代码中,我注释了 cin.getline 并将其替换为 cin>>userData;

当我将其与switch语句一起使用时,请告诉我问题是什么。

switch(option)
{
case 1:
    cout<<"Enter string "<<endl;
    //cin.getline(userData, 100);
    cin.getline(userData,100);

您的输入流中可能存在一个n,来自您之前的代码,不幸的是您没有在问题中显示,您需要刷新它才能cin.getline()工作。

公认的智慧是使用ignore

cin.ignore(numeric_limits<streamsize>::max(), 'n'); 
cin.getline(userData,100);

你的代码有效

#include <iostream>
int main(){
    char userData[100];
    auto option = 1;
    switch(option) {
        case 1:
            std::cout << "Enter string" << std::endl;
            std::cin.getline(userData, 100);
    }
    std::cout << userData;
    return 0;
}

一定有你没有展示的东西。