c++ - 如何在没有外部库的情况下使用 C++03 约束执行基于正则表达式的字符串操作?

标签 c++ string replace char c++03

我有一些字符串,我需要将其处理为小写并使用正则表达式将一些字符替换为空白。

Java 等价物是:

str.toLowerCase();
str.replaceAll("[^a-z]", "");
str.replaceAll("\\s", "");

c++03 约束下,不使用 Boost 或其他库,我如何才能在 C++ 中实现相同的功能?我运行的服务器的 g++ 版本是 4.8.5 20150623

小写很简单:

char asciiToLower(char c) {
    if (c <= 'Z' && c >= 'A') {
        return c - ('A' - 'a');
    }
    return c;
}

std::string manipulate(std::string str) {
    for (std::string::iterator it = str.begin(); it != str.end(); ++it) {
        it = asciiToLower(it);
    }
}

但是另外两个呢?

最佳答案

C++03 不支持正则表达式。这是在 C++11 中引入的。

因此,如果没有 (a) 外部库,或 (b) 自己编写正则表达式引擎,你不能

但是,从 4.9 开始,GCC 在实验性 -std=c++0x 模式下支持正则表达式。因此,如果您可以参与其中,并且您的 GCC 足够新,也许这可以帮助您。

(不要误以为 GCC 4.8 支持它:it doesn't; it's lying。)

否则我建议你更新你的编译器。甚至 C++11 现在也过时了。

关于c++ - 如何在没有外部库的情况下使用 C++03 约束执行基于正则表达式的字符串操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58582854/

相关文章:

c++ - 使用 make_tuple 进行比较

json - 跟踪具有动态属性的多个文件(字符串)的最佳方法是什么?

xcode - nsstring stringByReplacingOccurrencesOfString 挫折?

c++ - Qt 写入 xml:QIODevice::write (QFile, "D:/logs.xml"): device not open

c++ - deque::insert() 在索引处?

c++ - 如何理解这个声明中的typedef

java - Java 的 toLowerCase() 是否保留原始字符串长度?

C - 与 if 语句相关的 strcmp

string - Powershell脚本替换由于 “(”或 “)”而导致的路径字符串中的字符错误

javascript - 正则表达式如何用一个空格替换多个空格