C文字列に1つの文字が含まれているかどうかを確認したいと思います。この文字はLinuxのパイプラインに使用されます(実際には、、、、'|'
もチェックしたいと思い'<'
ます)。'>'
'>>'
'&'
Javaではこれを行うことができます:
String.indexOf()
しかし、文字列全体(文字列)をループせずに、Cでこれを行うにはどうすればよいchar*
ですか?
文字を検索する必要がある場合は、次のstrchr
ような関数を使用できます。
char* pPosition = strchr(pText, '|');
pPosition
NULL
指定された文字が見つからない場合になります。例えば:
puts(strchr("field1|field2", '|'));
「|field2」を出力します。は前方検索strchr
を実行することに注意してください。後方検索には、を使用できます。ここで、(例を示すために)次のような文字列があると想像してください: "variable:value|condition"。次のコマンドで値フィールドを抽出できます。strrchr
char* pValue = strrchr(strchr(pExpression, '|'), ':') + 1;
文字列内の文字のインデックスが必要な場合は、SOのこの投稿を参照してください。あなたもそのようなものが必要かもしれませIndexOfAny()
ん、ここでこれを使用するSOに関する別の投稿strnspn
。
代わりに、文字列を探している場合は、次のstrstr
ような関数を使用できます。
char* pPosition = strstr(pText, "text to find");
strchr
あなたの友だちです。
char *strchr(const char *s, int c);
この関数は、が指す文字列内で
strchr
最初に出現するc
(に変換される)を検索します。char
s
この
strchr
関数は、検索された文字へのポインタを返します。文字列に文字が含まれていない場合は、nullポインタを返します。
そしてもちろん、関数は最悪の場合(Java関数がおそらくそうするように)文字列全体をウォークスルーする必要があります。