Здравствуйте, Аноним, Вы писали:
А>возможно ли такую структуру конвертировать в строку
"конвертировать" aka сериализовать в строку — можно (например, шестью целыми числами в системе счисления на вкус),
"конвертировать" aka интерпретировать как c-строку — не стоит.
Re[2]: возможно ли такую структуру конвертировать в строку
Здравствуйте, vayerx, Вы писали:
V>Здравствуйте, Аноним, Вы писали:
А>>возможно ли такую структуру конвертировать в строку V>"конвертировать" aka сериализовать в строку — можно (например, шестью целыми числами в системе счисления на вкус), V>"конвертировать" aka интерпретировать как c-строку — не стоит.
если Вас не затруднит,покажите как сериализовать
Re[3]: возможно ли такую структуру конвертировать в строку
Здравствуйте, vayerx, Вы писали:
V>с чем мсье Pavel Dvorkin не согласен?
наверное, с тем, что раз в строке форматирования нет ни одного "%s", то использование sprintf разумно.
Re: возможно ли такую структуру конвертировать в строку
Здравствуйте, alsemm, Вы писали:
V>>с чем мсье Pavel Dvorkin не согласен? A>наверное, с тем, что раз в строке форматирования нет ни одного "%s", то использование sprintf разумно.
переполнение буфера может возникать только при "%s"?
для write-once кода, наверно, можно пользоваться sprintf'ом. но, код, который дописывают, рефакторят и всячески насилуют, может и в такое превратиться.
ну и надо ли говорить, что будет, если int таки расширится до 64+ бит, а в структуру добавится пара полей? разработчик на переполнение может и не нарваться, если работает с маленькими числами.
собственно, мысль в том, что накладные расходы на snprintf в подавляющем большинстве случаев пренебрежимо малы, а надежность кода и безопасность его модификации возрастает. так зачем же раскладывать лишние грабли?
Re[2]: возможно ли такую структуру конвертировать в строку
Здравствуйте, licedey, Вы писали:
L>Здравствуйте, Аноним, Вы писали:
А>>возможно ли такую структуру конвертировать в строку
L>На плюсах, для саморазвития: L>
strstream — deprecated,
atoi(v3) — некорректно сериализует v3, если там встречаются ненулевые символы после нулевых.
stringstream::operator<< возвращает ссылку на std::ostream, у которого нет метода str.
возможно, сериализацю в строку лучше разделить на два метода: оператор записи в std::ostream и непосредственно метод записи в строку через этот оператор и stringstream. это позволит сериализовать непосредственно в произволный выходного поток, без вызова дополнительного метода и конструирования лишней строки.
Здравствуйте, vayerx, Вы писали:
V>Здравствуйте, licedey, Вы писали:
L>>Здравствуйте, Аноним, Вы писали:
А>>>возможно ли такую структуру конвертировать в строку
L>>На плюсах, для саморазвития: L>>
А>>>v1 v2 и v3 могут быть нулями.
V>strstream — deprecated,
Писал на коленке. Но общая суть, вывод в stringstream. Если автор будет копать — чему-то научится.
V>не лишним будет взглянуть Boost.Serialization
Re[3]: возможно ли такую структуру конвертировать в строку
Здравствуйте, vayerx, Вы писали:
V>Здравствуйте, licedey, Вы писали:
L>>Здравствуйте, Аноним, Вы писали:
V>strstream — deprecated,
а что вместо него предлагают использовать?
Sic luceat lux!
Re[4]: возможно ли такую структуру конвертировать в строку
Здравствуйте, alsemm, Вы писали:
A>Здравствуйте, vayerx, Вы писали:
V>>с чем мсье Pavel Dvorkin не согласен? A>наверное, с тем, что раз в строке форматирования нет ни одного "%s", то использование sprintf разумно.
Ну, тогда еще неплохо было бы указать и достаточный размер буфера, не говоря об ошибке в формате.