C/C++中类似Python的“if x in y”的操作?
我学过一段时间的Python,现在想尝试理解C语言。
我在想,C语言有没有类似于Python的
if x in y:
比如说,如果x
是2
,而y
是2540
,那么这个表达式就会成立,因为y
里面包含了x
这个数字。
在C/C++中有没有类似的东西呢?因为我还没找到,如果有的话。
2 个回答
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;
}
这样做可以省去把数字转换成字符串的额外开销,也让编译器有更多空间进行聪明的优化。而且,我认为这样对读代码的人来说更清晰,代码的功能也更容易理解,这总是件好事 :)
祝好,
安迪
4
在C++中,如果y
是一个std::string
(就是一种字符串类型)或者是一个标准的集合(比如数组、列表等),你可以使用比如说std::find
这个方法(或者集合本身的find
方法)来检查它是否在这个集合里。
在C语言中,如果y
是一个字符串,你可以使用strchr
这个方法来查看某个字符是否在这个字符串里。
对于整数来说,没有直接的方法可以用。如果你想检查一个数字,可以先把这个数字转换成字符串(在C++中可以用std::to_string
,在C中可以用strtol
),然后再使用上面提到的方法。