我非常遗憾地提出这样一个令人尴尬的新问题,但是自从我上大学以来,我对C ++的了解还不多,我想在某个时候我会把我对指针和C ++字符串的所有了解从脑海中浮现出来。基本上,我正在使用PDCurses创建一个C ++控制台应用程序(准确地说是一个流氓),以处理输出。我想显示动态字符串(我认为这在动态游戏中会非常有用,呵呵),但是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 *'进行无效转换”的错误。我知道我在这里做的事真是大胆,愚蠢的错误,但对此我感到非常生锈。任何帮助都会超级有帮助。

最佳答案

只需将pvers声明为:

const char *pvers = vers.c_str();


const表示您将不会修改pvers指向的内存。实际上,这更多是一个提示,以便您打破这一假设,编译器可以对您大喊大叫。 (这就是为什么收到编译器警告的原因。)如果在超出此行的地方更改pvers后使用vers,您可能会开始觉得有些奇怪,但是对于您发布的摘录,我看不到这个问题。

09-27 02:40