Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > непонятка со вставкой пробелов для текстовой сериа


Автор: boostcoder 22.7.2012, 19:28
привет.

при текстовой сериализации, для разделения значений между собой, используются пробелы.
сейчас, у меня сериализация в текстовый архив происходит так: после записи любого значения, сражу же записывается пробел.
в псевдокоде:
Код

oarchive oa;
oa << 1 << ' ';
...
oa << 2 << ' ';

в итоге получится: 1_2_ (вместо подчерков - пробелы)
при сериализации в/из буфер, и получении этого буфера из сериализатора, я сделал https://github.com/niXman/yas/blob/master/include/yas/detail/io/stream.hpp#L85:
Код

    intrusive_buffer get_intrusive_buffer() const {
        if ( yas::is_binary_archive<Archive>::value ) { // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            return intrusive_buffer(pbase(), pptr()-pbase());
        } else {
            return intrusive_buffer(pbase(), pptr()-pbase()-1);
        }
    }


т.е. если это текстовая сериализация, то я возвращаю буфер с отсеченным последним пробелом. в этом случае все ок.
но при сериализации в файл, последний пробел не урежешь, и тесты на размер полученного архива сериализации проваливаются.

вариант с использованием флага который будет говорить о необходимости записывать пробел - как-то мне кажется черезодноместным =)

подскажите варианты.

спасибо.

Автор: boostcoder 22.7.2012, 20:51
хз каким местом я думал когда решил записывать пробел после значения...
изменил код так, чтоб пробел писался перед значением - и все тесты проходят успешно.
за одно, и https://github.com/niXman/yas/blob/master/include/yas/detail/io/stream.hpp#L85 не понадобился =)

Добавлено @ 20:51
всем спасибо. вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)