ncurses:奇怪的行格式

2023-12-02

我有这个代码可以与 ncurses 一起使用:

#include <iostream>
#include <string>
#include <fstream>
#include <ncurses.h>
#include <cstdlib>

//char a='a';
int c=0;

bool ex = false;

void mva()
{
    std::cout << "Nothing here yet, move along." << std::endl;
}

void cho()
{
    std::cout << "Choose a valid option noob!" << std::endl;
}

void menu()
{
    std::cout << "Welcome." << std::endl;
    std::cout << "Choose an option" << std::endl;
    std::cout << "1." << std::endl;
    std::cout << "2." << std::endl;
    std::cout << "3." << std::endl;
    std::cout << "4. About" << std::endl;
    std::cout << "5. exit" << std::endl;
}

void pause()
{
    std::cin.get();
    std::cin.ignore();
}

int main()
{
    initscr();
    //clear();
    refresh();
    //system("clear");
    while (ex != true)
    {
        menu();
        std::cin >> c;
        switch (c)
        {
            case 1:
                mva();
                pause();
                system("clear"); //unfortunately, there is no clean variant to this :(
            break;

            case 2:
                mva();
                pause();
            break;

            case 3:
                mva();
                pause();
            break;

            case 4:
                std::cout << "About" << std::endl;
                std::cout << "Programmed by nnmjywg." << std::endl;
                pause();
            break;

            case 5:
                std::cout << "Press enter to exit" << std::endl;
                pause();
                ex = true;
            break;

            default:
                cho();
                pause();
            break;
        }
    }
    endwin();
    return 0;
}

It should work normally, but I'm absolutely baffled when I see this strange line formatting. In addition to that, I also can't see what I enter (with std::cin) Strange line formatting


当你的程序调用initscr,ncurses(实际上anycurses 的实现)初始化终端模式以允许自行打印回车符和换行符(“换行符”)。打印换行符不会产生回车符。

但是 iostream 的endl只是换行。当您打印到cout这样,你就会看到楼梯。

当使用诅咒时,cout and cin并不是真正有用。使用getch (or wgetch) 读取输入。另外,使用诅咒echo (or noecho)来控制是否回显您提供的输入getch。诅咒echo没有影响cin(终端同样已设置为不回显输入,并且curses知道何时回显)。

进一步阅读:

  • Getch() 与 Linux C++ 中的显示函数不兼容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ncurses:奇怪的行格式 的相关文章

随机推荐

  • Julia:如何将数据复制到 Julia 中的另一个处理器

    在 julia 中如何将数据从一个处理器移动到另一个处理器 假设我有一个数组 a 1 10 或者其他一些数据结构 将其放在所有其他可用处理器上以便它可以在这些处理器上作为相同的变量名使用的正确方法是什么 一开始我不知道该怎么做 所以我花了一
  • 与许多开发人员共享 Gradle 用户主页有什么缺点吗?

    Question 简而言之 在同一文件系统上的多个开发人员之间共享 Gradle 用户主目录是否有任何缺点 更详细 我们的目标是通过本地 Gradle 缓存节省磁盘空间 Gradle 用户指南建议缓存对于并发访问是安全的 目前似乎没有任何方
  • 在另一个类中使用选定的行

    我认为这是基本问题 因为 stackoverflow 上到处都是这样的问题 ofc google 上也有这样的问题 但没有任何帮助我 我需要将表示选择哪一行的整数值传递给另一个类 这是我的代码 TableViewController h i
  • 通过 MS Graph API 更新事件,删除事件中的加入按钮

    我在 Outlook 日历中创建了一个活动 该活动包含团队加入链接 当我从 MS Graph API 更新事件时 加入按钮被删除 这是我正在做的示例代码 void UpdateEventInCalendar string eventId v
  • 在 Typescript 中选择 并省略 !== Foo?

    我遇到了一个错误 Pick
  • 从 UIScrollView + iphone 生成 PDF

    我想生成一个 UIScrollView 的 pdf 其内容大小接近 320 2000 如果我使用当前图形图像上下文来捕获滚动视图层 那么它仅捕获滚动视图的可见部分 而不是该滚动视图的整个层 我正在使用下面的代码 void CreatePdf
  • 在 Rails 中上传文件

    我想在我的网站中创建一个部分 访问者可以在其中上传文件 pdf 如何才能做到这一点 另外 上传 pdf 后 我需要该文件的链接 我没有使用无聊的文本链接 而是考虑使用 pdf 第一页的缩略图 有没有一个工具可以做到这一点 For the 上
  • 使用 JQuery 从视图状态获取值?

    是否可以使用 JQuery 从视图状态中获取特定值 我正在开发自定义控件 它使用jquery 嵌入到控件本身中来操作文本框中的值 我需要实现最小值和最大值 属性在控件中设置 并存储在视图状态中 相反使用隐藏的输入字段 我宁愿只是将信息从视图
  • 如何在 Bottle 微框架中使用 beaker session?

    当我尝试使用烧杯将某些内容分配给会话字典时 出现以下错误 Traceback most recent call last rv callback a ka File controllers py line 30 in login s ema
  • 所有正在运行的容器上的 Docker exec

    我正在服务器上运行多个 docker 容器 并且需要对所有容器上的存储库执行 git pull 我尝试过使用这个 docker exec docker ps q bash c cd var www html git pull 但它出错了 O
  • 以编程方式发送键盘事件不会将它们分派到输入中

    我将以编程方式生成的键盘事件发送到文档 我希望当前聚焦的输入元素能够显示它们 但事实并非如此 事件是使用以下函数从字符串生成的 const simulateKeyPress keys gt keys split forEach theKey
  • 如何使用“image”以常规布局显示矩阵?

    我有一个矩阵定义如下 dataMatrix lt matrix rnorm 400 nrow 40 then dataMatix使用以下内容绘制到屏幕上 image 1 10 1 40 t dataMatrix nrow dataMatri
  • mysqli 和 mysql 之间的区别? [复制]

    这个问题在这里已经有答案了 可能的重复 MySQLi 相对于 MySQL 的优势 我正在构建一个大型数据库 想知道哪个最好用 我现在正在清理我的值并转义字符以确保安全 但我想知道 php 中这些 mysql 查询的不同好处 Thanks 使
  • 从电子表格导入范围,但排除缺少数据的行

    我有 2 个电子表格 sheet1 Sheet2 Sheet2 使用 IMPORTRANGE 函数从 Sheet1 中提取数据 该函数工作正常 只是有几行在 1 2 列中缺少信息 并且出于我想要执行的目的 我需要删除这些行 有人能指出我正确
  • 如何在discord.js 中使用用户ID 来ping 用户?

    当我从我的机器人命令之一收到一条语句并且它 另一个用户时 我会收到该语句作为他们的用户 ID 当发生这种情况时 我想使用该 id 来 ping 该用户 我该怎么做 我将收到的消息放入数组中 因此当有人说 soandso 是个书呆子 时 它会
  • Microsoft One Note 2010 如何实现停靠到桌面的窗口?

    我刚刚第一次使用此功能 在 MS One Note 2010 中 单击 停靠到桌面 按钮 然后应用程序将其自身停靠在屏幕底部 如果窗口在其上方最大化 则该窗口不会与它重叠或重叠 One Note 窗口在屏幕空间的固定使用方面已变得与任务栏类
  • 无法将提供商注入 Karma 测试

    我正在尝试将 urlRouterProvider 注入到我的测试中 但我不断遇到未知提供程序问题 我正在使用 ui router 和测试指令 并且需要能够访问这些提供程序 否则所有测试都会失败 导航栏 spec js use strict
  • 控制器 cakephp 2 中的全局变量

    在控制器中使用全局变量的方法是什么 我尝试使用 beforeFilter 来执行此操作 但无法从其他函数访问它 只能使用来完成吗Configure read and Configure write 您可以在 AppController 中的
  • C++ 非法数字,简单问题

    我正在运行这个错误 int temp 0789 error C2041 illegal digit 8 for base 8 据我所知 编译器将任何以 0 开头的数字 例如 0123 理解为八进制 但是我怎样才能告诉编译器只接受前面的 0
  • ncurses:奇怪的行格式

    我有这个代码可以与 ncurses 一起使用 include