打印2D字符数组的最快方法是什么?

时间:2018-12-11 17:06:26

标签: c++

我正在尝试编写一个简单的控制台游戏。

我想每秒刷新控制台30次。通常这不是问题,但是这次我使用的是30x30大小的数组,并且使用两个循环打印它根本不够快。

我注意到

<code>printf( "%s\n", myarray );</code> 

足够快,但不适用于2d数组。

是否存在使我的数组“立即”出现在屏幕上的功能?

我正在使用此功能来打印数组:

void draw(char screen[32][31]){
    for (int x=0;x<32;x++){
        for (int y=0;y<31;y++){
            cout<<screen[x][y];
        }
        cout<<endl;
    }
}

1 个答案:

答案 0 :(得分:2)

这应该更快:

void draw(char screen[32][31]){
    for (int x = 0; x < 32; x++){
        cout.write(screen[x], 31);
        cout << '\n';
    }
    cout << flush;
}

如上面的注释中所述,endl是插入换行符的错误方法,因为它还会刷新流并因此消除了I / O库完成缓冲的好处。有关更多信息,请参见endl vs '\n'