我编写了一个程序,它由多个和多个函数组成,每个函数在控制传递给它们时在控制台上打印几个东西。现在我试图在屏幕中央打印所有内容,而不是在屏幕的左上角打印。为此,我唯一知道的是Windows.h的gotoxy函数。现在这将是一个非常忙碌的工作,因为我必须在每个“cout”上面放置gotoxy。有没有办法将光标设置到屏幕上的特定位置,每次打印任何内容时,都会从该特定位置开始打印。
答案 0 :(得分:3)
编写一个小助手函数(例如printCentered(std :: string)),它接收要打印的字符串。此功能将光标移动到中心,然后打印参数。然后通过调用此函数替换你的couts。
答案 1 :(得分:2)
cout
或任何其他基于流的I / O在整个屏幕上进行绘制。它对#34;位置"没有意义。如果它被重定向到另一个设备,则为流。答案 2 :(得分:1)
以下内容允许轻松查找和替换,并负责将光标设置为中心:
#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";
答案 3 :(得分:0)
假设您正在使用cout写入,这个黑客应该做的工作:
#define AT_CENTER( stuff ) goto( 100, 100 ); cout << stuff;
其中100,100应替换为您的特定值。然后在使用中:
AT_CENTER( "The meaning of life is " << x );