如何将`const char*`转换为`char*`?

Gri*_*fin 4 c++ const constants

我正在使用pdCurses库,我的目标是只在我的C++控制台游戏中使用字符串,但是curses mvinstr()函数或任何insert函数都需要非const char *作为参数.

  • 我首先解决这个问题的解决方案只是输入string.c_str(),但是返回一个const char *显然不适用于该功能的问题.
  • 接下来我放了,(char *)string.c_str()但这只会导致一个未处理的异常.
  • 最后我只是尝试过,char *test = string.c_str()但这与const两者都不兼容.

我该怎么做才能解决这个问题?

我只是尝试了const_cast(),我仍然得到一个异常抛出和中断....我不知道为什么PDcurses只采用非const char指针.... =(

好吧,当我使用这段代码时,使用char*缓冲区不起作用(time_s是sting):

size_t length; 
    char buffer[12]; 
    length=time_s.copy(buffer,5,0); 
    buffer[length]='\0';
mvinstr(time_loc_y, time_loc_x, buffer);
Run Code Online (Sandbox Code Playgroud)

我甚至在mvinstr()之前停了一下,并检查了缓冲区的内容是"00/0"我想要的是什么.

但我得到一个访问违规点"xutility"....

ike*_*ami 7

mvinstr(x,y,str)和其他人"从窗口中的当前或指定位置获取字符(或宽字符),并将它们作为字符串返回str(或wstr)."

该函数实际上将修改字符串,因此您无法安全地抛弃它const,特别是因为c_str指定您不应该修改返回的字符串.

你需要的东西是:

const MAX = 100;
char buf[MAX];
mvinnstr(x, y, buf, MAX);
...error checking...
string s = buf;
Run Code Online (Sandbox Code Playgroud)

请注意,我避免mvinstr使用mvinnstr以避免缓冲区溢出的可能性.