On Oct 19, 12:43 pm, bar...@bluezone.no wrote:
> Hi,
>
[quoted text clipped - 4 lines]
>
> Thanks for any help!
Since you know that your string is UTF-8, you need only be worried
that chars are 8-bits wide.
std::string s = "Hello, World";
char const* buffer = s.c_str();
>From this point you can fill a Byte array. I am not totally sure how
to do this in Managed C++, but it should get you to where you are
going.
Outside of that I can't help you.
Ben Voigt [C++ MVP] - 19 Oct 2007 21:06 GMT
> On Oct 19, 12:43 pm, bar...@bluezone.no wrote:
>> Hi,
[quoted text clipped - 15 lines]
> to do this in Managed C++, but it should get you to where you are
> going.
C++/CLI, not Managed C++
Add these lines to get a Byte array.
cli::array<System::Byte>^ a = gcnew cli::array<System::Byte>(s.length());
int i = s.length();
while (i-- > 0)
a[i] = buffer[i];
And then use Encoding::UTF8::GetString(a);
> Outside of that I can't help you.
barnum@bluezone.no - 20 Oct 2007 12:35 GMT
> <jehugalea...@gmail.com> wrote in message
>
[quoted text clipped - 36 lines]
>
> - Vis sitert tekst -
Thanks, that worked!
> I have a std::string which I know is UTF-8 encoded. How can I make a
> System::String^ from it?
> I tried UTF8Encoding class, but it wants a Byte array, and I don't
> know how to get that from a std::string.
To add to what others have written, I think that you could also convert the
string from Unicode UTF-8 to Unicode UTF-16 inside C++, using
::MultiByteToWideChar Win32 API.
Then, you can pass the resulting Unicode UTF-16 string value to
System::String (so, in this way you bypass UTF8Encoding class).
Giovanni