【问题标题】:How do I remove the first full number of a string as an integer C++如何将字符串的第一个完整数字删除为整数 C++
【发布时间】:2021-11-24 12:32:43
【问题描述】:

如何在 C++ 中将字符串的第一个完整数字删除为整数

例如一个字符串“thdfwrhwh456dfhdfh764”

只需要提取第一个数字 456 作为整数。

谢谢

【问题讨论】:

  • 你试过什么?什么没有奏效,为什么没有?
  • 您可以迭代直到找到第一个数字,然后迭代直到找到最后一个数字并只保留找到的内容,但这是很多工作。
  • 您可以使用字符串流。或正则表达式。或者您可以编写一个完全成熟的解析器。但是字符串流可能是最简单的方法。

标签: c++ string


【解决方案1】:

从找到第一个数字开始:

std::size_t pos = str.find_first_of(“0123456789”);

然后检查是否找到了一个数字:

if (pos != std::string::npos)

然后提取字符串的尾部:

std::string tail = str.substr(pos);

然后提取值:

int value = std::stoi(tail);

【讨论】:

    【解决方案2】:

    这是一个很好的例子,说明如何只读取出现的字符串的第一个数字:

    const char string_c[] = "this is a number 67theaksjdhflkajsh 78";
    std::string string_n;
    bool exitable = false;
    for (int i = 0; i < sizeof(string_c); i++)
    {
        char value = string_c[i];
        if (value == '0' ||
            value == '1' ||
            value == '2' ||
            value == '3' ||
            value == '4' ||
            value == '5' ||
            value == '6' ||
            value == '7' ||
            value == '8' ||
            value == '9') 
        {
            string_n += string_c[i];
            exitable = true;
        } else if (exitable == true)
        {
            printf("break\n");
            break;
        }
    }
    printf("this is the number: %s ", string_n.c_str());
    

    如果您需要 int 形式的数字,则可以使用 std::stoi() 函数。

    【讨论】:

    • 为什么不使用isdigit
    • 您也可以这样做,但这样更易于阅读和自定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多