Можно ли каким-то образом адаптировать строку / буфер в стиле c (char*
или wchar_t*
) для работы с библиотекой алгоритмов ускорения строк ?
То есть, например, алгоритм trim
имеет следующее объявление:
template<typename SequenceT>
void trim(SequenceT &, const std::locale & = std::locale());
и реализация (ищите trim_left_if
) требует, чтобы тип последовательности имел функцию-член erase
.
Как я могу использовать это с необработанным символьным указателем / строковым буфером c?
char* pStr = getSomeCString(); // example, could also be something like wchar_t buf[256];
...
boost::trim(pStr); // HOW?
В идеале алгоритмы должны работать непосредственно с предоставленным буфером. (Насколько это возможно. Очевидно, что он не может работать, если алгоритму нужно выделить дополнительное пространство в «строке».)
@ Виталий спрашивает: почему вы не можете создать std :: string из буфера символов и затем использовать ее в алгоритмах?
Причина, по которой у меня вообще есть char *, заключается в том, что я хотел бы использовать несколько algorthims в нашей существующей кодовой базе. Рефакторинг всех буферов символов в строку будет более трудоемким, чем оно того стоит, и при изменении или адаптации чего-либо было бы просто иметь возможность применить данный алгоритм к любой строке в стиле c, которая, как оказалось, живет в текущем коде.
Использование строки означало бы (a) копировать char * в строку, (b) применить алгоритм к строке и (c) скопировать строку обратно в буфер символов.