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

V

Vivienne

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
 
J

Jon Skeet [C# MVP]

Vivienne said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top