Re: UTF-8 std::string to System::String^ by barnum
barnum
Sat Oct 20 04:35:13 PDT 2007
On 19 Okt, 22:06, "Ben Voigt [C++ MVP]" <r...@nospam.nospam> wrote:
> <jehugalea...@gmail.com> wrote in message
>
> news:1192820470.187763.240190@t8g2000prg.googlegroups.com...
>
>
>
>
>
> > On Oct 19, 12:43 pm, bar...@bluezone.no wrote:
> >> Hi,
>
> >> 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.
>
> >> 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.
>
> 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.- Skjul sitert tekst -
>
> - Vis sitert tekst -- Skjul sitert tekst -
>
> - Vis sitert tekst -
Thanks, that worked!