Я пытался использовать богатые методы класса C ++ (find_first_of, replace) для некоторой обработки строки для задачи.
И я создал файл обертки вокруг вышеупомянутого кода, где он может быть включен в исходные файлы 'C' и получить функциональность.
strUtils.h
#ifdef __cplusplus
extern "C" {
#endif
void doTheStringWork(char *inStr, unsigned beginLoc);
#ifdef __cplusplus
}
#endif
strUtils.cpp
#include "strUtils.h"
/*some standard includes here*/
void doTheStringWork(char *inStr, unsigned beginLoc) {
std::string inStr_s(inStr);
/* Doing some processing with the string object inStr_s*/
/* .......*/
/* Done */
return;
}
И теперь я застрял с одной проблемой, которая не может бытьрешено без копирования насколько я знаю.Итак, я прошу вашей помощи в этом.
Проблема в том, что мне нужно вернуть изменения, сделанные функцией doTheStringWork
, на место вызывающего абонента.Вы можете сказать, взять значение .c_str()
в качестве возврата из функции или получить копию каким-либо образом.Этот подход работает хорошо, но для моих задач он становится очень медленным, поскольку строка может быть слишком длинной, и мне может потребоваться ее рекурсивная обработка.
Другими словами: можем ли мы создать строковый объект вокруг указателя на символ, гдеЯ могу использовать все строковые функции, и указатель на символ отражает все эти изменения.Если такого нельзя добиться с помощью стандартной библиотеки, может кто-нибудь предложить подход, как мне достичь своей цели здесь.