У меня есть некоторые данные, которые должны соответствовать определенному протоколу пакетов. Я получаю указанные данные как std :: string.cramming/embeding integers в строки в C++
Мне нужно взять некоторые целочисленные значения и поместить их в строку в определенных местах. я не хочу преобразовать целое число в строковые значения; Я хочу скопировать фактические значения байтов в.
так, например, если моя строка «abcdefg», и у меня есть 2-байтовый короткий со значением 25, который я хочу положить в 1-ю позицию, «Не хочу» a25defg ». Я хочу «a» + 0x00 + 0x19 + «defg» (простите меня за это. Это был лучший способ, который я мог бы представить, чтобы проиллюстрировать, что я хочу).
есть ли способ сделать это, используя обычные строки C++? для меня это не возможность для повышения производительности благодаря системному req.
Из того, что я вижу, строка может помочь, но все примеры, которые я вижу, преобразуют число/short/integer в его версию ascii, и это не то, что я хочу.
Я могу легко сделать это с помощью массивов char, но мне было интересно, могу ли я сделать это со строками.
спасибо.
Есть много вещей, которые влияют на вопрос. Первый из них заключается в том, использует ли протокол 'std :: string', потому что это текстовый протокол, или' std :: string' является злоупотреблением 'std :: vector', будет обрабатывать протокол NUL символов в строке? Является ли размер строки фиксированной в протоколе? –
да, давайте предположим, что. endianness проверяется до того, как этот код попадет в цель. – jasonmclose
хорошие вопросы. строка является фиксированным размером, поскольку протокол определен. и да, протокол действительно нуждается в нулевых символах и может обрабатывать их, что является одной из причин использования std :: string. Я знаю, как это сделать, используя массивы char. Мне просто интересно, как это можно сделать с помощью std :: string. – jasonmclose