|
Boost Users : |
Subject: Re: [Boost-users] [iostreams][serialization] compressed UTF-8 XML archive
From: michelle Tchicaya (mtchicaya_at_[hidden])
Date: 2010-03-17 09:48:47
hello all,
I am a newbie in C++ and need to use boost to dev pricing models for work.
Can anyone tell me how to get to know boost fast to dev strong solutions ?
Thanks a lot
Michelle
On Wed, Mar 17, 2010 at 3:29 AM, Paul <elegant_dice_at_[hidden]> wrote:
> (Was: Re: [Boost-users] Filesystem, serialization, character encoding and
> portable software)
>
> On 14 August 2008 00:44, Robert Ramey <ramey_at_[hidden]> wrote:
>
>> Daniel Krügler wrote:
>> > Robert Ramey wrote:
>> >> the wide character xml archives use UTF8.
>> >>
>> >> the narrow character xml archives use the currently set locale.
>> >>
>> >> Robert Ramey
>> >
>> > Sorry for asking offhand:
>> >
>> > What is the reasoning behind this different behaviour?
>>
>> I assumed that most programs built with narrow characters used
>> the locale concept to deal with this.
>>
>> Wide character systems lend themselves to UTF coding so I
>> used that for wide char archives. In order to do this, I used
>> Ron Garcia's UTF code conversion facet for streams.
>>
>> It would be quite easy to generate UTF coding for narrow
>> character archives. Just do the following:
>>
>> a) Build the UTF code conversion facet for narrow character
>> input (its templated on character type).
>>
>> b) When the stream is opened, attach this facet to the stream.
>>
>> Note the the output char format is not really a property of the
>> serialization
>> library, but rather an artifact of the way it has been used. That is, the
>> serialization library depends on the standard stream library for this
>> property.
>>
>>
> I understand that to get a UTF-8 XML file, I need to use a wide-character
> stream, but I can't seem to understand how I can compress a serialized UTF-8
> xml archive... it seems I can either do:
>
> namespace bio = boost::iostreams;
> namespace fs = boost::filesystem;
>
> fs::wofstream ofs(path,ios::binary);
> bio::filtering_stream<bio::output,wchar_t> out;
> out.push(bio::gzip_compressor()); // PROBLEM: gzip_compressor only
> accepts char
> out.push(ofs);
> boost::archive::xml_woarchive oa(out);
>
> --- OR ---
>
> fs::ofstream ofs(path,ios::binary);
> bio::filtering_stream<bio::output> out;
> out.push(bio::gzip_compressor());
> out.push(ofs);
> boost::archive::xml_woarchive oa(out); // PROBLEM: only accepts wostream
>
>
> I've googled but haven't found anything relevant... either people use an
> ifstream with gzip_compressor, or they don't use gzip_compressor at all.
>
> thanks,
> Paul
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net