Разобрать не алфавитно-цифровые символы из объекта SQLCHAR - PullRequest
0 голосов
/ 13 сентября 2009

В настоящее время у меня есть набор объектов 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 ]

1 голос
/ 15 сентября 2009

считают этот псевдокод

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

0 голосов
/ 13 сентября 2009

Вы ищете простоту обслуживания или лучшую производительность?

Boost Regex может помочь с обслуживанием

Для производительности я бы посмотрел на стандартный алгоритм STL ... std :: remove_if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...