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

Rea*_*ion -1 c++ console cout

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

为了给出一些范围,我有一个键盘输入功能被调用来检查按键,当我按下"C"我的相机时,值会更新,我打印出确认到控制台,如下所示:cout << "\nView switched to 'Default View..."<< endl;`但它在无限循环中永久打印它.

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

void keyboard()
{
   if (CAM_DEF) //switch to default view
   {
       cout << "\nView switched to 'Default View`..." << endl;
       Q_PRESSED = false;
       E_PRESSED = false;
   }
    ... //more key presses
}
Run Code Online (Sandbox Code Playgroud)

pol*_*ver 9

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

void function()
{
    static bool runOnce= true;

    if(runOnce)
    {
        cout << //print stuff
        runOnce = false;
    }
    ... do other stuff
}
Run Code Online (Sandbox Code Playgroud)

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

using namespace std;

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

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果:

Hello
Run Code Online (Sandbox Code Playgroud)