【问题标题】:How to set output to middle?如何将输出设置为中间?
【发布时间】:2015-11-18 22:59:04
【问题描述】:

是否可以编写代码使我输出的文本格式化到屏幕中间?我已经尝试了很多,但没有任何效果。这是我目前想到的。

cout.setf (ios::middle);

这是一个错误。 我也试过了

setw(10);//etc.

但是我对使用 setw 命令有点陌生,所以我不知道如何正确使用它。

更新:

//The Game of 4 Seasons
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{
cout << "Welcome to this game\n\n\n";

system ("pause");
system ("cls");

cout << "CAUTION!\n\n";
cout << "The adventure you are about to embark contains high levels of:\n";
cout << "Fun\n";
cout << "Adventure\n";
cout << "Excitement\n\n\n";
cout << "If you have a record of buzz killing or anything similar, \nthen this game is NOT for you.\n\n\n\n";

system ("pause");
return 0;
}

【问题讨论】:

  • 您不能以独立于平台的方式执行此操作,因为没有标准方法可以知道您的控制台的宽度。
  • 我猜你要问的是操作系统,或者你需要某种特殊的库来解决这个问题,比如 ncurses。
  • 值得一提的是,cout 转到主要输出,有时是屏幕,有时是文件。写入“文件中一行的中间”并没有多大意义,除非您对每行的长度做出假设。你可以做出这样的假设吗?
  • @Ben 好的,我将对问题进行更新,以显示我的具体要求。
  • C++ 对您的“屏幕”一无所知。事实上,我们也没有!

标签: c++ iostream iomanip


【解决方案1】:

问:是否可以编写代码使我输出的文本格式化到屏幕中间?

答:是的。不是直接用“cout”。但肯定有类似 ncurses 的东西:

【讨论】:

  • @Andrew Tew:另一种选择是PDCurses。与 NCurses 一样,它也适用于所有平台(包括 Windows)。
  • 你能给我看看具体的页面,它至少告诉我如何在 ncurses 中输出到中间。或者它在 C++ 中是什么,哈哈。
【解决方案2】:

就我自己而言,我更喜欢诅咒。

但是根据您的需求有多复杂,您可能会考虑 ansi 终端仿真......大多数系统都有它们。 (在 Ubuntu 上,它被称为 gnome-terminal")

然后你可以使用 ansi 终端控制进行输出。例如,

void gotoxy(int col, int row)

可以输出一个 esc 字符, 后跟“[”和行(即“12”), 其次是 ”;”和列号(“40) 后跟“H”。

用户输入将是 std::cin。

不是一个很好的解决方案,但有一些功能。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多