我正在实施fairplay算法,但我注意到cout
语句不起作用
以下是我的代码。请注意,包含所有必需的头文件,并且没有编译错误(据我所知)。程序运行没有错误,我得到终止命令(再次,没有错误)。
但同时没有输出。即使cout
测试2也没有反映在输出中。
注意:如果我在每个cout语句的末尾使用endl,我会得到输出,但这在我想要打印矩阵时很不方便。除此之外,必须有一个简单的方法,而不是每次都写一次
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;
}
答案 0 :(得分:1)
在每个cout.flush()
语句后添加std::endl
(或隐式刷新的cout
。
cout
使用缓冲输出,
使用cout.flush()
将清除缓冲区并强制写出内容。
感谢πάνταῥεῖ的指导
答案 1 :(得分:0)
尝试使用
fflush(stdin);
cout<<"Test 1";
之后如果不能正常工作,请尝试getline(cin,key);
cout<<"Test 1";
getline(cin,key);
cout<<"Test 2";