Cout не работает в C++ после ввода строки (getline)

Я на полпути реализации алгоритма fairplay, но я заметил, что cout заявления не работают

Ниже мой код. Обратите внимание, что все необходимые заголовочные файлы включены и нет ошибок компиляции (насколько я знаю). Программа запускается без ошибок, и я получаю завершенную команду (опять же, без ошибок).

Но нет выхода в то же время. Даже cout тест 2 не отражен в выводе.

ПРИМЕЧАНИЕ: я получаю вывод, если использую endl в конце каждого оператора cout, но здесь это неудобно, так как я хочу напечатать матрицу. Кроме того, должен быть простой способ, а не писать enld каждый раз

int main()
{

    int i,j,k,x,y,z;
    bool status[24]={false};
    char map[5][5]={0};
    string key;
    cout<<"Enter the key"<<endl;

    cout<<"Test 1";
    getline(cin,key);
    cout<<"Test 2";
    x=key.length();

    for(i=0;i<x;i++)
        key[i]=toupper(key[i]);

    for(i=0;i<x;i++)
    {
        y=key[i]-65;
        if(status[y]==0)
            status[y]=1;
    }

    cout<<"Adding the main key string";

    i=j=k=z=0;
    while(k<x)
    {
        if(j==5)
        {
            i++;
            j=0;
        }
        map[i][j++]=key[k++];
    }
    cout<<"Adding the remaining alphabets";
    while(k++<25)
    {
        if(j==5)
                {
                    i++;
                    j=0;
                }
        while(status[z++]==false)
            map[i][j++]=z+64;
    }

    cout<<"Output matrix";
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            cout<<map[i][j];
        }


    return 0;
}

2 ответа

Решение

Добавлять cout.flush() (или же std::endl который неявно сбрасывается) после каждого cout заявление.

cout использует буферизованный вывод, используя cout.flush() очистит буфер и принудительно выписывает содержимое.

Спасибо πάντα ῥεῖ за руководство

Попробуйте использовать

fflush(stdin);

после cout<<"Test 1"; если не работает, попробуйте после getline(cin,key);

cout<<"Test 1";
getline(cin,key);
cout<<"Test 2";
Другие вопросы по тегам