我非常抱歉发布这样一个令人尴尬的新问题,但自从我大学时代以来我就没有太多地接触过 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*' 到
char*' 的无效转换”错误。我知道我正在做一些非常厚颜无耻的事情,在这里犯了愚蠢的错误,但我真的生疏了。任何帮助都会非常有帮助。
最佳答案
只需将 pvers
声明为:
const char *pvers = vers.c_str();
这个const
意味着您不会修改pvers
指向的内存。这实际上更像是一个提示,如果你打破这个假设,编译器可以对你大喊大叫。 (这就是你收到编译器警告的原因。)如果你在更改 vers
超出此行后使用 pvers
,你可能会开始看到一些奇怪的东西,但对于你发布的片段我没有看到那个问题。
关于c++ - 如何使用 C++ 和 PDCurses 显示可变字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163853/