我正在尝试编写一个简单的控制台游戏。
我想每秒刷新控制台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;
}
}
答案 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'
。