cout 在接受线路输入后无法在 C++ 中工作 (getline)
cout not working in c++ after taking line input (getline)
我正在实施公平竞赛算法,但我注意到 cout
语句不起作用
下面是我的代码。请注意,所有必需的头文件都包含在内,并且没有编译错误(据我所知)。程序运行没有错误,我得到了终止命令(同样没有错误)。
但是同时没有输出。即使 cout
测试 2 也没有反映在输出中。
注意:如果我在每个 cout 语句的末尾使用 endl,我会得到输出,但是这里不方便,因为我想打印矩阵。此外必须有一个简单的方法而不是每次都写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;
}
尝试使用
fflush(stdin);
在 cout<<"Test 1";
之后,如果不工作,请在 getline(cin,key);
之后尝试
cout<<"Test 1";
getline(cin,key);
cout<<"Test 2";
在每个 cout
语句后添加 cout.flush()
(或隐式刷新的 std::endl
)。
cout
使用缓冲输出,
使用 cout.flush()
将清除缓冲区并强制写出内容。
感谢 πìντα ῥεῖ 指导
我正在实施公平竞赛算法,但我注意到 cout
语句不起作用
下面是我的代码。请注意,所有必需的头文件都包含在内,并且没有编译错误(据我所知)。程序运行没有错误,我得到了终止命令(同样没有错误)。
但是同时没有输出。即使 cout
测试 2 也没有反映在输出中。
注意:如果我在每个 cout 语句的末尾使用 endl,我会得到输出,但是这里不方便,因为我想打印矩阵。此外必须有一个简单的方法而不是每次都写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;
}
尝试使用
fflush(stdin);
在 cout<<"Test 1";
之后,如果不工作,请在 getline(cin,key);
cout<<"Test 1";
getline(cin,key);
cout<<"Test 2";
在每个 cout
语句后添加 cout.flush()
(或隐式刷新的 std::endl
)。
cout
使用缓冲输出,
使用 cout.flush()
将清除缓冲区并强制写出内容。
感谢 πìντα ῥεῖ 指导