我有一些字符串,需要将其转换为小写字母,并使用正则表达式将某些字符替换为空白。
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开始支持正则表达式。因此,如果您可以尝试一下,而您的GCC足够新,也许可以为您提供帮助。
(不要误以为GCC 4.8支持它:it doesn't; it's lying。]
否则,建议您更新编译器。甚至C ++ 11都已经老了。