如何在没有外部库的情况下使用C++03约束执行基于正则表达式的字符串操作
How do I perform regex based string manipulation with a C++03 constraint and no external libraries?
我有一些字符串,需要将其操作为小写,并使用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现在也很老了。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 函数作为模板参数,是否对返回类型强制约束
- 为什么catch中的代码没有被执行
- 约束和显式模板实例化
- 如何在没有外部库的情况下使用C++03约束执行基于正则表达式的字符串操作
- 如何在C++17中强制执行模板和模板模板参数之间的约束
- 如何为STL容器的元素强制执行类似主键约束的行为