【发布时间】:2011-10-01 11:43:25
【问题描述】:
当我使用 strtok 对 c++ 字符串进行标记时,会出现一个令人困惑的问题,请参见下面的简单代码:
void a(string s){
strtok((char*)s.c_str(), " ");
}
int main(){
string s;
s = "world hello";
a(s);
cout<<s<<endl;
return 0;
}
程序输出“世界”。 它不应该输出“world hello”吗?因为我将字符串作为值参数传递给函数 a,所以 strtok 不应该修改原始 s... 谁能解释一下这个技巧。 谢谢。
【问题讨论】:
-
别那样做,你问的是内存损坏问题。是的,strtok 确实改变了它的输入。 cplusplus.com/reference/clibrary/cstring/strtok