cin.getline不使用switch语句

时间:2014-02-07 12:04:41

标签: c++ string

这是我程序中的一段代码,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);

2 个答案:

答案 0 :(得分:2)

您的输入流中可能存在\n,而您之前的代码很可能未在问题中显示,并且您需要将其清空以使cin.getline()生效。< / p>

公认的智慧是使用ignore

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

答案 1 :(得分:1)

您的代码works

#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;
}

必须有一些你没有展示的东西。