记录一次使用strtok奇怪的问题

strtok会破坏源字符串,这个在认识这个函数的时候就知道了

所以程序中大概这样用的

//源字符串
string filename = "xxx_yyy_zzz.xml";
//将字符串存入容器,比如set
set<string> setFiles;
setFiles.insert(string(filename));
//分解字符串
char* p1 = strtok(filename.c_str(), "_");
char* p2 = strtok(NULL, "_");
char* p3 = strtok(NULL, ".");

问题:

g++ 9.3.0编译没用问题。

g++ 4.9.4编译容器里的字符串是xxx

跟编译器的实现有关?

Tags:, ,