如何检查C ++中的变量中是否存在整数?

时间:2015-04-15 17:19:40

标签: c++

例如

cout<<"What number"<<endl;
cin>>number;

这会给我

What number
123

那么如何检查输入数字中是否有1或12或32?

4 个答案:

答案 0 :(得分:1)

为此,您可以以字符串的形式获取输入,并检查是否存在所需的数字。

string input;
cout << "What number?" << endl;
cin >> input;
string to_find = "12";
int location = input.find(to_find);
if (location == -1)
  cout << "12 wasn't found in the string" << endl;
else
  cout << "12 was present in the string, beginning at index " << location << endl;
// You can similarly do this for other cases.

你应该注意的事情是检查输入是否实际上是一个数字。此外,如果要检查多个数字,可以将所有数字存储在一个数组中,并将find()命令放在循环中。

答案 1 :(得分:1)

您可以使用标准函数std::to_string将数字转换为字符串,然后应用方法find。例如

#include <iostream>
#include <string>

int main()
{
    int number = 123;

    for ( int x : { 1, 12, 32 } )
    {
        if ( std::to_string( number ).find( std::to_string( x ) ) != std::string::npos )
        {
            std::cout << "Number " << number << " contains " << x << std::endl;
        }
        else
        {
            std::cout << "Number " << number << " does not contain " << x << std::endl;
        }
    }
}

程序输出

Number 123 contains 1
Number 123 contains 12
Number 123 does not contain 32

我认为搜索到的数字也是整数输入。否则,您可以拥有一个与数字对应的字符串文字数组。

同样根据您的描述,不清楚数字123是否包含例如13或32或21。

答案 2 :(得分:0)

计算输入数字中每个数字的出现次数,然后用模式数字数字进行检查 如果模式数字小于输入数字计数 - 否则答案是肯定的。

答案 3 :(得分:0)

这应该有效。只需将数字转换为字符串,然后根据您的数字进行检查。

int number;
std::cin >> number;
if ( std::to_string( number ).find( "1" ) != std::string::npos )
    std::cout << "The number contains 1" << std::endl;
if ( std::to_string( number ).find( "12" ) != std::string::npos )
    std::cout << "The number contains 12" << std::endl;
if ( std::to_string( number ).find( "32" ) != std::string::npos )
    std::cout << "The number contains 32" << std::endl;