📜  在C++中从字符串中删除尾随零(1)

📅  最后修改于: 2023-12-03 15:37:34.686000             🧑  作者: Mango

在C++中从字符串中删除尾随零

在开发过程中,我们有时会遇到需要将字符串中的尾随零删除的需求。例如,从数据库中查询出的数据可能存在尾随零,需要将其删除后再进行其他操作。

下面介绍两种从字符串中删除尾随零的方法。

方法一:使用C++标准库操作字符串

C++标准库提供了一系列操作字符串的函数,其中包括删除字符串末尾的空格函数std::remove_if()。可以根据这个函数来实现删除字符串末尾的尾随零。

#include <string>
#include <algorithm>

std::string removeTrailingZeros(std::string str) {
    str.erase(std::find_if(str.rbegin(), str.rend(), [](int ch) {
        return ch != '0';
    }).base(), str.end());
    return str;
}

该函数利用了lambda表达式,将字符串从右向左遍历,找到第一个不是零的字符,然后删除该字符及其右侧的所有字符。最后返回删除后的字符串。

方法二:使用正则表达式

使用正则表达式也可以实现删除字符串末尾的尾随零。

#include <regex>
#include <string>

std::string removeTrailingZeros(std::string str) {
    std::regex pattern("[0]*$");
    str = std::regex_replace(str, pattern, "");
    return str;
}

该函数使用正则表达式[0]*$匹配字符串末尾的所有零。然后使用std::regex_replace()函数将匹配到的零替换为空字符串。最后返回替换后的字符串。

总结

使用上述两种方法都可以实现删除字符串末尾的尾随零。第一种方法使用了C++标准库中的函数和lambda表达式,代码相对简单。第二种方法使用了正则表达式,代码稍微复杂,但更加灵活,可以删除任意字符。