请考虑以下使用strtok拆分字符串madddy的代码段.
char* str = (char*) malloc(sizeof("Madddy"));
strcpy(str,"Madddy");
char* tmp = strtok(str,"d");
std::cout<<tmp;
do
{
std::cout<<tmp;
tmp=strtok(NULL, "dddy");
}while(tmp!=NULL);
Run Code Online (Sandbox Code Playgroud)
它工作正常,输出是Ma.但是通过将strtok修改为以下内容,
tmp=strtok(NULL, "ay");
Run Code Online (Sandbox Code Playgroud)
输出变成了Madd.那么strtok究竟是如何运作的呢?我有这个问题,因为我希望strtok将分隔符字符串中的每个字符作为分隔符.但在某些情况下,它是这样做的,但在少数情况下,它会产生意想不到的结果.谁能帮我理解这个?
Lig*_*ica 10
"试图了解strtok"祝你好运!
无论如何,我们在2011年.令人敬畏:
std::string str("abc:def");
char split_char = ':';
std::istringstream split(str);
std::vector<std::string> token;
for (std::string each; std::getline(split, each, split_char); token.push_back(each));
Run Code Online (Sandbox Code Playgroud)
:d