0

次のような値を持つ可能性のある「文字列」という名前の変数があります。

const char* String = "/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/test/DSC_0188.JPG";

また

const char* String = "/auth/v1.0";

また

const char* String = "/v2/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images?limit=1000&delimiter=/&format=xml";

ここで、「文字列」に「v1」という文字が含まれているかどうかを確認したいと思います。これを正確にチェックする必要があります。strchr で試してみましたが、'v1' を 1 文字として使用するのではなく、'v' と '1' を 2 つの別個の文字として使用するため、正確ではありません。さらに、namepace std とライブラリ文字列は使用できず、「string.h」しか使用できません。これらの制限内で、変数「String」に文字「v1」があるかどうかを正確に確認するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

6

「文字列」に文字「v1」があるかどうかを確認したい

「string.h」しか使えません

次に、おそらく必要ですstrstr。またv1、文字ではなく、文字列です。


補足: なぜcstringC++ で使用するのですか? まだそれを呼んでいるのはどんな先生string.hですか?

于 2012-04-26T07:53:24.933 に答える
3

v1アルファベットによる文字ではありません。これは適切な文字列「v1」であり、@ cnicutarが述べたように、文字列内の文字列を検索するcの方法はを使用することstrstrです。使い方はとても簡単で、KMPも非常に高速に実行されます(ただし、文字列の種類にとってはそれほど重要ではありません)。

私はあなたにアドバイスします:

  • 変数には常にスモールキャップスで始まる名前を付けます(つまりString-> my_string
  • 文字列をとして宣言しますconst char[]。ポインタを回避できる場合は、ポインタに干渉する必要はありません。これをポインタとして宣言すると、文字列にメモリを動的に割り当てたため、混乱する可能性があります。
于 2012-04-26T07:58:35.070 に答える