5

我需要做的是找到某个字符串的位置,然后只保留之后的位置。

伪代码:

string1 = "CDSDC::walrus"
string2 = "::"
string3 = (substr( string1, strfind(string1, string2) + 2 )) // +2 being the len of str2
// at this point I want string3 == "walrus"
4

1 回答 1

24

strstr做你想做的事。即定位子字符串。

const char * strstr ( const char * str1, const char * str2 );

返回指向 str1 中第一次出现 str2 的指针,如果 str2 不是 str1 的一部分,则返回空指针。

对于你的例子,

char *string3 = strstr(string1,"walrus")

或者,如果您想根据分隔符将字符串拆分为标记,例如::use 可以使用strtok

char * strtok ( char * str, const char * delimiters );

将字符串拆分为标记

对该函数的一系列调用将 str 拆分为标记,这些标记是由作为定界符一部分的任何字符分隔的连续字符序列。

对于你的例子,

strtok(string1, "::");
string3 = strtok(NULL,"::")

strtok是一个棘手的功能,因为它修改了您正在标记的字符串并且也不是 re-rentrant。这是一篇很好的文章,解释了使用的整体方面strtok

于 2012-06-01T05:00:09.013 回答