1

私はしばらく Python のことを知っていて、C について理解を深めようとしていました。

Pythonに似たものがあるかどうか疑問に思っていました

if x in y:

たとえば、xis2およびyisの場合、数字として含まれて2540いる場合、ステートメントは true になります。yx

C/C++ でこれに似たものはありますか? あるとしても、まだ見つかっていないからです。

4

2 に答える 2

4

C++ では、ystd::stringまたは標準コレクションの場合、eg std::find(またはコレクション自体のfindメソッド) を使用して、コレクション内にあるかどうかを確認できます。


C ではy、文字列の場合、文字が文字列内にあるかどうかを確認するために使用できstrchrます。


整数の場合、そのような方法はありません。数値を文字列に変換し ( std::to_stringC++ またはstrtolC で使用)、上記のいずれかの方法を使用できます。

于 2013-02-24T06:50:35.627 に答える
3

この特定の問題については、数字を文字列に変換しません

必要がないからです。代わりに、この関数 (C コード) を見てください。

#include <assert.h>

int is_digit_in_number(unsigned char digit, unsigned int number)
{
    assert(digit < 10);
    while(number)
    {
        if(number % 10 == digit)
            return 1;
        number /= 10;
    }
    return 0;
}

これにより、数値を文字列に変換するオーバーヘッドが節約され、コンパイラにスマートな最適化の余地が与えられます。また、コードが何をすべきかが読者にとってより明確になります。これは常に良いことです:)

乾杯、アンディ

于 2013-02-24T07:20:03.070 に答える