如何使用C ++和PDCurses显示变量字符串?

时间:2010-01-29 17:37:08

标签: c++ string pointers char pdcurses

我非常抱歉发布这样一个令人尴尬的新问题,但是我从大学时代开始就没有用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*' to char *'的无效转换”错误。我知道我在做一些非常肆无忌惮的事情,在这里犯了愚蠢的错误,但我真的生气了。任何帮助都会非常有用。

2 个答案:

答案 0 :(得分:2)

只需将pvers声明为:

const char *pvers = vers.c_str();

const表示您不会修改pvers指向的内存。这真的是一个暗示,如果你打破这个假设,编译器会对你大喊大叫。 (这就是你得到编译器警告的原因。)如果你在更改pvers之后使用vers,你可能会开始看到一些时髦的东西,但对于你发布的代码片段我没有看到这个问题

答案 1 :(得分:2)

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