我非常遗憾地提出这样一个令人尴尬的新问题,但是自从我上大学以来,我对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
,您可能会开始觉得有些奇怪,但是对于您发布的摘录,我看不到这个问题。