请提出比C ++中的gotoxy函数更好的东西

| 我编写了一个包含多个功能的程序,当控制权传递给它们时,每个功能都在控制台上打印一些内容。现在,我尝试将所有内容打印在屏幕中央而不是屏幕左上角。为此,我唯一了解的是Windows.h的gotoxy函数。现在这将是一件非常忙碌的工作,因为我将必须在每个\“ cout \”上方放置上totoxy。有没有一种方法可以将光标设置在屏幕上的特定位置,并且每次打印任何内容时,都将从该特定位置开始打印。     
已邀请:
编写一个小的辅助函数(例如printCentered(std :: string)),该函数接收要打印的字符串。此功能将光标移到中心,然后打印参数。然后,用此函数的调用替换您的提示。     
请勿在整个屏幕上使用“ 0”或任何其他基于流的I / O进行绘制。如果将流重定向到其他设备,则“定位”流没有任何意义。 直接调用Win32控制台函数,例如在控制台程序中绘制状态行的此示例。     
以下内容使查找和替换变得容易,并注意将光标设置在中心:
#include <iostream>

std::ostream& PrintCentered(){
  // comment in the following if you\'re experiencing
  // weird output due to io-buffering like @Ben says in a comment
  //std::cout.flush();
  gotoxy(your_x, your_y);
  return std::cout;
}
现在,只需将上面的功能查找和替换您的
std::cout
通话,并将其放在您希望居中的位置即可。替换后的用法应如下所示:
PrintCentered() << \"your message\";
    
假设您正在使用cout进行写入,则此hack应该可以完成此任务:
 #define AT_CENTER( stuff ) goto( 100, 100 ); cout << stuff;
如果100,则应使用您的特定值替换100。然后使用:
 AT_CENTER( \"The meaning of life is \" << x );
    

要回复问题请先登录注册