📌  相关文章
📜  c++ 字符串查找最后一个数字 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.902000             🧑  作者: Mango

C++ 字符串查找最后一个数字

在 C++ 中,我们经常需要处理字符串,并且有时候需要查找其中的数字。本文将介绍如何在 C++ 字符串中查找最后一个数字的方法。

方法一:从后往前遍历字符串
#include <iostream>
#include <string>

int findLastDigit(const std::string& str) {
    for (int i = str.length() - 1; i >= 0; i--) {
        if (std::isdigit(str[i])) {
            return str[i] - '0';
        }
    }
    return -1; // 如果字符串中没有数字,返回-1表示找不到
}

上述代码首先遍历字符串中的每个字符,从后往前进行遍历。使用 std::isdigit 函数判断该字符是否为一个数字字符。如果是数字字符,则将其转换为相应的数字并返回。如果遍历完整个字符串后没有找到数字字符,则返回-1。

方法二:使用正则表达式

要使用正则表达式需要包含 <regex> 头文件,并使用 std::regex_search 函数进行搜索。

#include <iostream>
#include <string>
#include <regex>

int findLastDigit(const std::string& str) {
    std::regex pattern("\\d");
    std::smatch match;

    std::string::const_reverse_iterator rit = str.crbegin();
    std::string::const_reverse_iterator rend = str.crend();

    if (std::regex_search(rit, rend, match, pattern)) {
        return std::stoi(match.str());
    } else {
        return -1; // 如果字符串中没有数字,返回-1表示找不到
    }
}

上述代码使用了正则表达式模式 \\d 来进行匹配数字字符。首先将字符串进行反向迭代,保证搜索最后一个数字字符。然后使用 std::regex_search 函数进行匹配,并使用 std::stoi 函数将匹配到的字符转换为整数并返回。如果没有找到数字字符,则返回-1。

示例
int main() {
    std::string str = "H3110 W0rld";
    int lastDigit = findLastDigit(str);
    
    if (lastDigit != -1) {
        std::cout << "最后一个数字是:" << lastDigit << std::endl;
    } else {
        std::cout << "字符串中没有数字字符。" << std::endl;
    }

    return 0;
}

输出结果:

最后一个数字是:0

上述示例中,我们将字符串 "H3110 W0rld" 传递给 findLastDigit 函数,函数找到最后一个数字字符 0 并返回。

通过以上两种方法,我们可以在 C++ 字符串中查找最后一个数字。使用方法一可以在不引入正则表达式库的情况下完成,而方法二则更加灵活并可以通过调整正则表达式模式进行更复杂的匹配。