【问题标题】:How can I display variable strings using C++ and PDCurses?如何使用 C++ 和 PDCurses 显示变量字符串?
【发布时间】:2010-01-29 17:37:07
【问题描述】:

我非常抱歉发布这样一个令人尴尬的新问题,但自从我上大学以来,我并没有过多地使用 C++,我想在某些时候我喝光了我所知道的关于指针和 C++ 字符串的所有知识我的头。基本上,我正在使用 PDCurses 创建一个 C++ 控制台应用程序(准确地说是一个 roguelike)来处理输出。我想显示动态字符串(我认为这在动态游戏中会非常有用,呵呵)但是 mvaddstr() 一直给我抛出错误。这是我正在尝试做的一个示例:

 string vers = "v. ";
 vers += maj_vers;// + 48;
 vers += ".";
 vers += min_vers;// + 48;
 vers += ".";
 vers += patch_vers;// + 48;
 char *pvers = vers.c_str();
 mvaddstr(5,17, pvers);
 refresh();

当然,这会在 char *pvers 定义上给我一个“来自const char*' tochar*' 的无效转换”错误。我知道我在这里做的事情真的很厚颜无耻,愚蠢的错误,但我对此真的很生疏。任何帮助都会非常有帮助。

【问题讨论】:

    标签: c++ string pointers char pdcurses


    【解决方案1】:

    只需将pvers 声明为:

    const char *pvers = vers.c_str();
    

    这个const 意味着你不会修改pvers 指向的内存。这实际上更像是一个提示,以便编译器可以在你打破这个假设时对你大喊大叫。 (这就是您收到编译器警告的原因。)如果您在将vers 更改超出此行之后使用pvers,您可能会开始看到一些奇怪的东西,但是对于您发布的sn-p,我没有看到这个问题。

    【讨论】:

    • 啊,非常感谢。我会投票给你,但我没有声望。
    【解决方案2】:

    Asveikau 是对的,但我通过搜索一些 ncurses 文档找到了另一种选择 - 我总是可以只使用 mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers) 来获得相同的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 2020-05-11
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多