2016-02-11 4 views
0

Мне нужно преобразовать System :: Char, который происходит из мира .NET, в char в мире C++/CLI (собственный тип C++).Как преобразовать систему :: Char в C++ char

Я уверен, что входящий символ является регулярным символом ASCII, только в мире .NET Unicode. Поэтому мне никогда не придется иметь дело с персонажем, который не имеет прямого сопоставления с char.

ответ

1

Как насчет того, чтобы преобразовать его напрямую?

System::Char neta = System::Char('b'); 
char c = neta; 
+0

Ох! Поскольку они были действительно двумя разностными размерами, я даже не думал попробовать это. Но все работает отлично. Как неловко! Спасибо!! – Gordon

0

У меня есть код, работающий, но официально ... очень уродливый. Я надеюсь, что кто-то еще добавит ответ на этот вопрос, который имеет лучшее решение, чем это!

// I am given neta externally 
System::Char neta = System::Char('b'); 

// Here is the conversion code - is there a better way? 
System::String ^str = gcnew System::String(neta,1); 
auto trans = Marshal::StringToHGlobalAnsi(str->ToString()); 
auto cstr = static_cast<const char*>(trans.ToPointer()); 
char c = *cstr; 
Marshal::FreeHGlobal(trans); 

// c contains the expected answer 'b'. 

Большое спасибо!

Смежные вопросы