使用C ++时,命令提示符中最快的文本呈现方法是什么

时间:2013-04-09 16:47:03

标签: c++ command-prompt cout

ATM我正在开发一款游戏,所以我正在寻找一种方法,以便在眨眼之间渲染整个区域。现在我遇到渲染速度慢的问题(或者说打印速度在这里是特定的,我知道cout是一种缓慢的方法,但这就像我现在使用的第一个选项)

因此有一些方法可以足够快地显示文本,所以我不会遇到字符闪烁或者只是逐个绘制字符的问题,因为我正在使用循环来绘制它们。

任何建议都是apreciated

编辑:即使每个人都在贬低这一点,我认为这是一个体面的问题,对初学程序员有用。我现在已经真正了解了应该如何解决这个问题,而不是无休止地在网上搜寻这个问题

2 个答案:

答案 0 :(得分:3)

当涉及到传统终端支持方面的操作时,C ++标准输入/输出库非常有限。

您唯一的出路就是使用专门的库。正如我在评论中提到的,ncursespdcurses应该足够了,具体取决于您所使用的平台。

答案 1 :(得分:1)

只是一个快速比较表明,Visual Studio中的coutprintf慢得多(明显不同) - 我将返回一个确切差异的编辑。

显然,用于UI操作的库可能会好得多,因为它可以移动光标,只重绘实际更改的屏幕位等,等等。

编辑:我使用以下代码来测量两种输出方法的速度:

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <ctime>

int main(int argc, char **)
{
    clock_t t = clock();
    for(int i = 0; i < 40; i++)
    {
        if (argc == 1)
        {
            std::cout << "0123456789012345678901234567890123456789012345678901234567890123456789\n";
        }
        else
        {
            printf("0123456789012345678901234567890123456789012345678901234567890123456789\n");
        }
    }
    std::cout.flush();
    t = clock()-t;
    std::cout << "Time = " << std::setprecision(3) << t / (double)CLOCKS_PER_SEC;
    return 0;
}

在我的机器上,使用printf('mytest x')大约需要0.1s(0.098-0.113s),使用cout('mytest'需要大约0.8s(0.776-0.860) )。