在重复调用或更新的函数中,是否可以在窗口中使用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
}
您可以使用静态局部变量来防止多次打印:
void function()
{
static bool runOnce= true;
if(runOnce)
{
cout << //print stuff
runOnce = false;
}
... do other stuff
}
或者使用lambda来回答C++11的花哨问题,lambda更短,但可读性较差:
using namespace std;
void function()
{
static const auto runOnce = [] { cout << "Hello" << endl; return true;}();
}
int main()
{
function();
function();
function();
return 0;
}
结果:
Hello