【发布时间】:2021-12-02 04:23:15
【问题描述】:
我的任务是检查一个数字是否包含8。我已将数字转换为std::string 并使用了它的find() 方法。但它只适用于以8 开头的数字,例如8、81、881 等。对于18、28 等数字,它不起作用。
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
unsigned long long g = 0;
int main()
{
string str;
cin >> str;
int f = stoi(str);
string eig = "8";
for (int a = 1; a <= f; a++)
{
string b = to_string(a);
if (b.find(eig) != size_t() && b.rfind(eig) != size_t())
{
cout << "It worked with " << b << "\n";
g++;
}
}
cout << g;
}
【问题讨论】:
-
请阅读How to Ask 和minimal reproducible example。我们需要查看您的代码。
-
对不起,我只要求我的一段代码。我的代码解决了另一个任务,但我只需要 find() 函数的答案
-
std::string::find- "...找到的子字符串的第一个字符的位置,如果没有找到这样的子字符串,则为 npos..." i> en.cppreference.com/w/cpp/string/basic_string/find -
minimal reproducible example (MRE) 的一个很酷的事情是它是一些强大的调试技术的提炼,并且制作 MRE 通常会在发现和修复错误的情况下提前结束,而无需来自我们。如果您提出问题而您还没有 MRE 或类似的东西,那么您就是在伤害自己。