Connecting Tech Pros Worldwide Forums | Help | Site Map

incorrect result when converting from basic string to System::String

Vivienne
Guest
 
Posts: n/a
#1: Aug 20 '07
Hi,
I am using a c# library in my c++ project. so I have to convert a
basic string to System::string to make use of a function that takes
System::String as argument. I did it like this:

System::String^ s = gcnew System::String(basic_s.c_str()); //here
basic_s is a basic string in c++

But I found s contains less charactors than the original basic string,
some charactors are missing.
here, the basic string contians bytes that rang from -127 to 127,
which is the result of an encrypting function.

what's wrong with the converting? how to convert the string without
missing charactors?

Thanks!

Vivienne


Jon Skeet [C# MVP]
Guest
 
Posts: n/a
#2: Aug 20 '07

re: incorrect result when converting from basic string to System::String


Vivienne <zhoudan.bupt@gmail.comwrote:
Quote:
I am using a c# library in my c++ project. so I have to convert a
basic string to System::string to make use of a function that takes
System::String as argument. I did it like this:
>
System::String^ s = gcnew System::String(basic_s.c_str()); //here
basic_s is a basic string in c++
>
But I found s contains less charactors than the original basic string,
some charactors are missing.
here, the basic string contians bytes that rang from -127 to 127,
which is the result of an encrypting function.
And what do you expect the result to be? Which encoding to you expect
it to use?

As a general rule, it's a *really, really* bad idea to convert
arbitrary binary data (such as the result of encryption) to text
directly. Use Base64 instead.

--
Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Closed Thread