Search code examples
c++inputsentence

C++ Input Sentence


I have a problem with inputting sentences to char or string.

std::string STabPytania;
bool OK=true;

void pobieranie()
{
    cout << "Podaj ilosc pytan :";
    cin >> iloscP;

    for (pytanie = 1; pytanie <= iloscP; pytanie++)
    {
        cout << "__________________________________________________________";
        cout << "\n Napisz tresc pytania nr" << pytanie << " :";
        std::getline(cin, STabPytania);
        cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
        cin >> iloscO;
        for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
        {
            cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
            cin >> TabOdpowiedzi[pytanie][odpowiedzi];
        }
    }
}

But when it comes to asking me for sentence program skips to next instruction without waiting for me input, why?

Debuging

Code


Solution

  • cin some times create issues because of \n character in the buffer. So clean that each time with cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n'); like below:-

    void pobieranie()
    {
     cout << "Podaj ilosc pytan :";
     cin >> iloscP;
     cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
    for (pytanie = 1; pytanie <= iloscP; pytanie++)
    {
        cout << "__________________________________________________________";
        cout << "\n Napisz tresc pytania nr" << pytanie << " :";
        std::getline(cin, STabPytania);
        cout << "\n Podaj ilosc odpowiedzi dla: " << pytanie << " pytania:";
        cin >> iloscO;
        cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
        for (odpowiedzi = 1; odpowiedzi <= iloscO; odpowiedzi++)
        {
            cout << "\n Napisz tresc odpowiedzi nr" << odpowiedzi << " :";
            cin >> TabOdpowiedzi[pytanie][odpowiedzi];
            cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
        }
      }
    }