openoffice-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jorge ivan poot diaz <ivan.pootd...@gmail.com>
Subject Re: std::stringstream aStrStream
Date Fri, 19 Apr 2013 16:59:41 GMT
I implemented the code, thanks.

At the beginning of the class I put this code:

Original Code
String aName( aEdtName.GetText() );

I've replaced with
::rtl::OUString aName2( aEdtName.GetText() );

The concatenation. This is fine

 std::stringstream aS;
            aS <<
                 "This"
                 << ::rtl::OUStringToOString(aName2,
RTL_TEXTENCODING_ASCII_US).getStr()
                 << std::endl;

I convert from stringstream to string

std::string s = aS.str();
        _STL::cout << s;

Now I want to replace aName with s, in the following code fragment:

if (eCM != CM_RGB)

            ConvertColorValues (aAktuellColor, CM_RGB);
        pEntry = new XColorEntry( aAktuellColor, aName );
<---------------------- Original code
        pEntry = new XColorEntry( aAktuellColor, s );
<----------------------
Would be like this

        pColorTab->Insert( pColorTab->Count(), pEntry );

        aLbColor.Append( pEntry );
        aValSetColorTable.InsertItem( aValSetColorTable.GetItemCount() + 1,
                pEntry->GetColor(), pEntry->GetName() );

        aLbColor.SelectEntryPos( aLbColor.GetEntryCount() - 1 );

But this does not work, in building generates error:
http://imagebin.org/254616

It could be the type of variable?
How is the conversion from stringstream to string, is ok?


2013/4/18 Andre Fischer <awf.aoo@gmail.com>

> On 18.04.2013 04:51, jorge ivan poot diaz wrote:
>
>> Hello,
>>
>> Thanks you,  I have already changed the string as you said me. This is the
>> result:
>> ::rtl::OUString aName ( aEdtName.GetText() );
>>
>> And then I put this code
>>
>> std::stringstream aStrStream;
>>              aStrStream << "\nThis is " << aName << " and " <<
aName << "
>> genial!" <<std::endl;
>>              _STL::cout << aStrStream.str();
>>
>> The building was successful, but does not print whole aStrStream. Only
>> this
>> part:
>> This is
>> http://imagebin.org/254440
>>
>
> OUString is a UTF-16 string.  That means that when it is created from an
> ASCII string then every second byte is '\0'.  That means that
>
>             aStrStream << "\nThis is " << aName << ...
>
> is basically equivalent to
>
>             aStrStream << "\nThis is " << '\0' << ...
>
> Therfore everything after "\nThis is " is cut off.  To fix this you have
> to replace
>     << aName <<
>
> with
>
>   << ::rtl::OUStringToOString(**aName, RTL_TEXTENCODING_ASCII_US).**getStr()
> <<
>
> You may want to use a small method to make this more readable:
>
>   namespace
>   {
>       sal_Char* o2a (const ::rtl::OUString& rsText)
>      {
>       return ::rtl::OUStringToOString(**rsText,
> RTL_TEXTENCODING_ASCII_US).**getStr();
>      }
>   }
>
> and then
>
>     aStrStream << "\nThis is " << o2a(aName) << ...
>
> [I did not compile this, there may be typos in this]
>
>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: dev-unsubscribe@openoffice.**apache.org<dev-unsubscribe@openoffice.apache.org>
> For additional commands, e-mail: dev-help@openoffice.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message