C ++输入句子

时间:2017-11-17 12:50:33

标签: c++ input sentence

我在输入字符或字符串时遇到问题。

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

但是当我要求句子程序跳到下一条指令而不等我输入时,为什么呢?

Debuging

Code

1 个答案:

答案 0 :(得分:0)

cin因为缓冲区中的\n字符而有时会产生问题。如此干净,每次cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');如下: -

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');
    }
  }
}