C/C++中类似Python的“if x in y”的操作?

1 投票
2 回答
901 浏览
提问于 2025-04-17 16:55

我学过一段时间的Python,现在想尝试理解C语言。

我在想,C语言有没有类似于Python的

if x in y:

比如说,如果x2,而y2540,那么这个表达式就会成立,因为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),然后再使用上面提到的方法。

撰写回答