我如何使用C ++ 03约束并且不使用外部库来执行基于正则表达式的字符串操作?

问题描述 投票:0回答:1

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

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++ string replace char c++03
1个回答
0
投票

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

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

但是,在实验性-std=c++0x模式下,GCC从4.9开始支持正则表达式。因此,如果您可以尝试一下,而您的GCC足够新,也许可以为您提供帮助。

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

否则,建议您更新编译器。甚至C ++ 11都已经老了。

© www.soinside.com 2019 - 2024. All rights reserved.