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