【发布时间】:2011-08-26 20:15:35
【问题描述】:
我正在使用 pdCurses 库,我的目标是只在我的 C++ 控制台游戏中真正使用字符串,但 curses mvinstr() 函数或任何插入函数需要非常量 char * 作为参数。
- 我最初对这个问题的解决方案是简单地输入
string.c_str(),但返回的const char *显然不适用于该函数。 - 接下来我输入
(char *)string.c_str(),但这只会导致未处理的异常。 - 最后我只是尝试了
char *test = string.c_str(),但这与const也不兼容。
我该怎么做才能解决这个问题?
K 我刚刚尝试了 const_cast() ,但仍然抛出异常并中断.... 我不知道为什么 PDcurses 只接受非常量字符指针.... =(
好吧,当我使用此代码时,制作 char* 缓冲区不起作用(time_s 是刺痛):
size_t length;
char buffer[12];
length=time_s.copy(buffer,5,0);
buffer[length]='\0';
mvinstr(time_loc_y, time_loc_x, buffer);
我什至在 mvinstr() 之前停止并检查缓冲区的内容是“00 / 0” 正是我想要的。
但我得到一个指向“xutility”的访问冲突点......
【问题讨论】:
-
考虑到通常不建议删除 constness,这与设计缺陷有关。
-
违规访问什么代码和在哪里?
-
你有没有想过这个问题?