当我使用的strtok来标记一个C++字符串,它发生混乱的问题,请参阅下面的简单代码:C++的strtok在函数改变原始字符串值作为参数
void a(string s){
strtok((char*)s.c_str(), " ");
}
int main(){
string s;
s = "world hello";
a(s);
cout<<s<<endl;
return 0;
}
程序输出“世界”。 不应该输出“世界你好”吗?因为我将字符串作为值参数传递给函数a,strtok不应该修改原始的字符... 任何人都可以解释这个技巧。 谢谢。
不要这样做,你要求的内存腐败问题。 是的,strtok会改变它的输入。 http://www.cplusplus.com/reference/clibrary/cstring/strtok/ –