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";