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() 将清除缓冲区并强制写出内容。

感谢 πìντα ῥεῖ 指导