使用cout在重复调用的函数中只打印一次语句

时间:2013-12-08 20:41:50

标签: c++ console cout

是否可以在Windows中使用cout打印一行文本,只能在重复调用或更新的函数内一次打印到控制台?

为了给出一些范围,我有一个键盘输入功能被调用来检查按键,当我按"C"我的相机的值被更新时,我打印出确认到控制台:{{1 }“...<< endl;`但是它会永远打印在无限循环中。

这可能听起来像一个简单的问题,但这是我第一次遇到这样的问题。

cout << "\nView switched to 'Default View

1 个答案:

答案 0 :(得分:9)

您可以使用静态局部变量来防止多次打印:

void function()
{
    static bool runOnce= true;

    if(runOnce)
    {
        cout << //print stuff
        runOnce = false;
    }
    ... do other stuff
}

或者一个C ++ 11花式裤子使用lambda回答,这个lambda更短但可读性更低:

using namespace std;

void function()
{
    static const auto runOnce = [] { cout << "Hello" << endl; return true;}();
}

int main()
{
    function();
    function();
    function();

    return 0;
}

结果:

Hello