Можно ли каким-то образом адаптировать строку / буфер в стиле c ( char *
или wchar_t *
) для работы с Библиотекой алгоритмов Boost String ?
То есть, например, его алгоритм trim
имеет следующее объявление:
template
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?
В идеале алгоритмы должны работать непосредственно с предоставленным буфером. (Насколько это возможно. Очевидно, это не сработает, если алгоритму нужно выделить дополнительное пространство в «строке».)
@Vitaly спрашивает: почему вы не можете создать std :: строка из буфера символов, а затем использовать ее в алгоритмах?
Причина, по которой у меня вообще есть char *, заключается в том, что я хотел бы использовать несколько алгоритмов в нашей существующей кодовой базе. Реорганизация всех буферов символов в строку потребует больше усилий, чем она того стоит, и при изменении или адаптации чего-либо было бы неплохо просто иметь возможность применить данный алгоритм к любой строке c-стиля, которая находится в текущем коде.
Использование строки означало бы (а) скопировать char * в строку, (b) применить алгоритм к строке и (c) скопировать строку обратно в буфер символов.