Как обернуть простой буфер символов с помощью std::string или его эквивалента?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как обернуть простой буфер символов с помощью std::string или его эквивалента?

Сообщение Anonymous »


Мотивация:

Я использую некоторую библиотеку (которую я не контролирую) со следующей функцией:

char* foo(/*здесь некоторые параметры */); Который возвращает очень длинную строку с нулевым завершением. Теперь я хочу использовать эту функцию

void bar(const std::string& s); который доступен в другой библиотеке, которую я использую (то есть я не контролирую сигнатуры ни одной из этих функций). Я хочу передать результат foo() в bar(), не копируя его.

Вопрос:

Я хочу обернуть непрерывный буфер символов строковым объектом, чтобы его можно было передать как const std::string&. Как мне это сделать?

Примечания:
[*]Я понимаю, что это может не понравиться, но я все равно хотел бы это сделать, если это возможно. [*]Да, это может быть неуместно, или некрасиво, или слишком C-подобно, но это то, что мне (думаю, мне) нужно сделать. [*]Комментарии к ответам предполагают, что наследование std::string не является вариантом, поскольку у него нет соответствующих виртуальных методов. По сути, нам приходится предполагать некоторые вещи о реализации (или писать разный код для разных реализаций) и «создавать вручную» экземпляр std::string. Таким образом, вопрос, похоже, в том, как это сделать.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»