如何在命令行程序中创建简单的类似窗口的元素?

kee*_*sma 4 text command-line c++ ncurses

当我sudo dpkg-reconfigure lightdm在终端中执行时,我看到一个类似窗口的简单列表菜单。有没有办法在 C++ 中制作类似的东西?

这看起来像:
在此处输入图片说明

Eli*_*gan 5

运行时看到的包含在终端中的基于文本的类似窗口的界面sudo dpkg-reconfigure lightdm是使用ncurses编码。所以如果你想让你的程序提供一个看起来像这样的界面,你也可以使用 ncurses。

要在 Ubuntu 中使用 ncurses 构建软件,您应该获得相应的头文件包。除非你是交叉编译,否则这将是:

  • 对于使用大多数字符由单个字节表示的传统字符串的程序(例如UTF-8),请使用libncurses5安装 libncurses5.

    如果您的字符串是char(在 C 和其他基于 C 的语言中)或std::string(在 C++ 中)的数组,这可能是您想要的。

  • 对于需要宽字符支持的程序,请使用libncursesw5安装 libncursesw5.

    如果您的字符串是wchar_t(在 C 和其他基于 C 的语言中)或std::wstringstd::u16string、 或std::u32string(在 C++ 中)的数组,您将特别需要它。

或者,为了帮助调试您的程序,您可能需要调试符号(用于gdb等调试器)。为此,安装libncurses5-dbg安装 libncurses5-dbglibncursesw5-dbg安装 libncursesw5-dbg 也。

另请参阅Launchpad 上的 Ubuntu 页面中的 ncurses,其中包含 Ubuntu 中主要 ncurses 软件包的列表以及每个当前支持的 Ubuntu 版本的版本信息。

当您使用 GCC 构建您的程序时(例如,使用gccorg++命令),给它一个参数-lncursesor -lncursesw,通常在命令的最后。这将您的程序链接到 ncurses 库。例如:

g++ -Wall -g -o hello hello.cpp -lncurses
Run Code Online (Sandbox Code Playgroud)

这将编译hello.cpp以生成一个带有调试符号 ( -g)的可执行文件,称为hello ( -o hello),对您可能需要警告的大多数事情发出警告 ( -Wall),并链接到常规(非宽字符)ncurses 库 ( -lncurses)。