我如何使用C ++和PDCurses显示变量字符串?
题
我非常抱歉张贴这样的尴尬newbish的问题,但因为我的大学时代我还没有搞乱多用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();
当然,这给我一个“从const char*' to
char转换无效*'”错误的字符* pvers定义。我知道我在做一些真正明目张胆,愚蠢的错误在这里,但我对这个真的很生疏。任何帮助将是超级有用的。
解决方案
只是声明pvers
为:
const char *pvers = vers.c_str();
此const
意味着你不打算修改存储器通过pvers
指向。这真的更多的是暗示,使编译器可以骂你,如果你打破了这种假设。 (这就是为什么你得到了编译器警告。)你可能会开始看到一些时髦的,如果你改变pvers
超出此行之后使用vers
,但对于段,您贴我没有看到这个问题。
其他提示
Asveikau是正确的,但我发现了另一个选项,通过一些ncurses的文档搜索 - 我总是可以只mvprintw(col, row, "v. %d.%d.%d", maj_vers,min_vers,patch_vers)
达到相同的效果。
不隶属于 StackOverflow