试图了解strtok

Kar*_*ick 4 c++ strtok

请考虑以下使用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

  • 是的,我意识到这并没有严格回答这个问题.但是IMO它是一个有价值和优越的选择,所以我认为它仍然值得一个答案. (3认同)