У меня есть ситуации, когда мне нужно обработать большой (многие ГБ в) объемы данных как таковой:инициализации станд :: строка из полукокса * без копии
- построить большую строку путем добавления много меньше (C полукокса *) строки
- подрезать строка
- преобразовать строку в C++ сопзЬ станд :: строка для обработки (только для чтения)
- повтор
ПДР ta на каждой итерации независимы.
Мой вопрос заключается в том, что я хотел бы свести к минимуму (если это возможно исключить) кучу выделенного использования памяти, поскольку на данный момент это самая большая проблема с производительностью.
Есть ли способ конвертировать строку C (char *) в строку stl C++ (std :: string), не требуя, чтобы std :: string внутренне выделяла/копировала данные?
В качестве альтернативы, могу ли я использовать строковые потоки или что-то похожее на повторное использование большого буфера?
Edit: Спасибо за ответы, для ясности, я думаю, что пересмотренный вопрос будет:
Как можно эффективно построить (через постоянные добавления) на C++ строку СТЛ. И если выполнение этого действия в цикле, где каждый цикл полностью независим, как я могу повторно использовать это выделенное пространство.
Я думаю, что ваше решение - лучший подход (chaning для кода обработки), к сожалению, в этой ситуации это не вариант. – Akusete 2008-12-12 02:54:42
Существует ли стандартный способ для повторного использования буфера? Я просто не хочу полагаться на реализацию на конкретной платформе. – Akusete 2008-12-12 02:56:26
Если этот код обработки не является библиотечной функцией, которая не использует итераторы или строки, просто простой старый символ `char *` +. – SasQ 2015-06-11 06:48:12