例如
cout<<"What number"<<endl;
cin>>number;
这会给我
What number
123
那么如何检查输入数字中是否有1或12或32?
答案 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;