【发布时间】:2016-05-26 14:58:15
【问题描述】:
我正在测试 netbeans 8.1 中的 explode() 函数。 如下:
array explode(const char * delimiter, const char * str, unsigned int limit = 0){
array out; //my custom struct
str = strtok(const_cast<char*>(str), delimiter);
int tokens = 0;
while(str){
cout << str; //this line is my nightmere, as it does not display
str = strtok(NULL, delimiter);
out[tokens + 1] = str;
tokens++;
}
return out;
}
以上 sn-p 在 netbeans 8.1 中构建成功。但是,在运行时,错误消息是:
cygdrive/C/Program Files/NetBeans 8.1/ide/bin/nativeexecution/dorun.sh:第 33 行:6036 分段错误(核心转储)sh "${SHFILE}" 按 [Enter] 关闭终端...
【问题讨论】:
-
你是怎么调用这个函数的?你传入了什么数据?
-
像这样:array result = explode(",", "Socket, send, 1 2 3");
-
您正在尝试写入只读字符串文字,即使您
const_cast它...使用不同的char*来保存strtok的返回值的原始指针。