0

我非常抱歉发布这样一个令人尴尬的新问题,但自从我大学时代以来,我并没有过多地使用 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();

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

4

2 回答 2

2

只需声明pvers为:

const char *pvers = vers.c_str();

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

于 2010-01-29T17:40:14.730 回答
2

Asveikau 是对的,但我通过搜索一些 ncurses 文档找到了另一种选择——我总是可以mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers)达到同样的效果。

于 2010-01-29T17:53:40.587 回答