2013-02-24 50 views
1

我認識的Python了一段時間,試圖讓我的頭周圍C.針對C/C++的操作與Python的「if x in y」類似嗎?

我想知道是否有類似Python的

if x in y: 

例如什麼,如果x2y2540的聲明將是真實的,因爲y包含x作爲一個數字。

C/C++有類似的東西嗎?因爲我還沒有找到它。

+4

'x'和'y'都是字符串? – 2013-02-24 06:49:55

+0

字符串或整數。我知道它確實適用於這兩種類型。 – evemzee 2013-02-24 06:55:11

+0

在我對C的困境中,他們是整數:) – evemzee 2013-02-24 06:55:40

回答

4

在C++中,如果ystd::string或標準集合,則可以使用例如, std::find(或集合自己的find方法)查看它是否在集合中。


在C,如果y是一個字符串,你可以使用strchr,看是否有字符是的字符串中。


對於整數,沒有這樣的方法。您可以將數字轉換爲字符串(在C++中使用std::to_string,在C中使用strtol),然後使用上述方法之一。

+0

將考慮這一點,謝謝 – evemzee 2013-02-24 07:02:35

+1

正如Joachim Pileborg所說,對於C++字符串或容器,使用「std :: find」,而C字符串使用標準庫函數「strchr()」。對於整數,「2540」中有'2'這個問題嗎?'*不知道*。整數「2540」*爲*「2540」;它確實*不* *「有一個2」...除非你認爲它是一個*十進制字符串「,這會帶你回到」查找「和」strchr()「。 – paulsm4 2013-02-24 07:06:32

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; 
} 

這樣可以節省數轉換爲字符串的開銷,並給出了一些編譯器空間智能優化。此外,國際海事組織它更清晰讀者什麼碼應該做的,這始終是一個很好的事情:)

乾杯, 安迪

相關問題