代码之家  ›  专栏  ›  技术社区  ›  Holograham

从sqlchar对象中解析非字母数字字符

  •  0
  • Holograham  · 技术社区  · 15 年前

    我现在有一个数据库查询中的一组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,然后再返回。有更好的方法吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Dustin Getz sunsations    15 年前

    考虑这个伪代码

    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

        2
  •  0
  •   Chris Bednarski    15 年前

    您是在寻求易于维护还是更好的性能?

    Boost Regex有助于维护

    对于性能,我将研究标准STL…std::删除“if”算法