我目前有一堆来自数据库查询的SQLCHAR对象。查询结果存储在std :: string中,然后绑定到各个SQLCHAR变量。需要解析其中一些变量以删除任何非字母数字字符。这里最好的方法是什么?
我已经实现了对std :: string ...
的基本解析for (std::string::iterator i = str.end()-1; i >= str.begin(); --i)
{
if ( !isalpha(*i) && !isdigit(*i) )
{
str1.erase(i);
}
}
但是现在我遇到了将SQLCHAR转换为std :: string然后再返回的问题。有一个更好的方法吗?
答案 0 :(得分:1)
考虑这个伪代码
bool is_not_alnum(char c){return !isalnum(c);}
unsigned char* s = ()blah_as_sql_char; //somehow its gotta cast to cstr right?
std::remove_if(s, strlen(s), is_not_alnum);
SQLCHAR result = (SQLCHAR)s; //cast it back however
http://www.cplusplus.com/reference/clibrary/cctype/isalnum/
http://www.sgi.com/tech/stl/remove_if.html
答案 1 :(得分:0)
您是否在寻找易于维护或更好的性能?
boost regex可以帮助维护
对于性能,我会查看标准STL ... std :: remove_if算法