Getline ignoring first character of input

前端 未结 3 1133
遥遥无期
遥遥无期 2020-12-11 04:20

I\'m just starting with arrays in C++ and I\'m having a problem getting the first character of an array.

This is my code,

1- I enter a name, such as \"Jim\"<

3条回答
  •  春和景丽
    2020-12-11 05:04

    I had this piece of code with the problem that it was eating the first character after the first cycle (first cycle was ok)

    do{
        cout << endl << "command:> ";
        string cmdStr1="";
        cin.ignore();
        getline(cin, cmdStr1);
        cout << "cin= " << cmdStr1 << endl; //For Debuging
        //...more code here
    }while(1);
    

    Output was:

    command:> pos

    cin= pos

    command:> pos ... from 2nd loop it started to delete the 1st character

    cin= os

    ...

    If "cin.ignore();" was commented then it resulted in a "segmentation fault":

    command:> cin=

    Segmentation fault

    Solution working for me:

    To move the "cin.ignore();" line just before the do-while loop.

    cin.ignore();
    
          do{
                std::cout << endl << "command:> ";
                std::string cmdStr1="";
                std::getline(std::cin, cmdStr1);
                std::cout << "cin= " << cmdStr1 << endl; //For Debuging
                //...more code here
        }while(1);
    

    Output was:

    command:> pos

    cin= pos

    command:> pos

    cin= pos

    ...

    ...

    P.S. It was incredible hard to put code here... I am disappointment to continue collaborating.

提交回复
热议问题