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

How do I perform regex based string manipulation with a C++03 constraint and no external libraries?

本文关键字:执行 约束 C++03 操作 字符串 正则表达式 外部 情况下      更新时间:2023-10-16

我有一些字符串,需要将其操作为小写,并使用regex将一些字符替换为空格。

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(自己编写正则表达式引擎,就无法。

然而,在实验-std=c++0x模式下,GCC从4.9开始支持regex。所以,如果你能做到这一点,并且你的GCC足够新,也许这会对你有所帮助。

(不要被误导以为GCC 4.8支持它:它不支持;它在撒谎。(

否则,我建议您更新编译器。即使是C++11现在也很老了。