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の一部でない場合はnullポインタを返します。

あなたの例では、

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

::または、 useのような区切り文字に基づいて文字列をトークンに分割する場合は、strtok

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

文字列をトークンに分割する

この関数への一連の呼び出しは、strをトークンに分割します。トークンは、区切り文字の一部である任意の文字で区切られた連続した文字のシーケンスです。

あなたの例では、

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

strtokトークン化する文字列を変更し、レンタルしないという意味で、トリッキーな関数です。これは、使用の全体的な側面を説明する素晴らしい記事ですstrtok

于 2012-06-01T05:00:09.013 に答える