Re: Как загнать String в char*
От: nilovs  
Дата: 13.12.07 16:42
Оценка:
перебирать все символы строке и запихивать в char* нельзя — они юникодные
я использую следующий код:
__gc class Utils
{
public:
 static System::Text::Encoding* encoding=System::Text::Encoding::GetEncoding(1251);
 static char* ToChars(System::String* str)
 {
  if(str==0 || str->Length==0)
   return "";
  char bytes __gc[] = encoding->GetBytes(str);
  char __pin *p = &bytes[0];
  return p;
 }
};

а используются полученные строки через __pin указатели
void set_Text(String* value)
{
 char __pin *text=Utils::ToChars(value);
 //...
}

delete не надо вызывать, т.к. само подчистится сборщиком мусора.
__pin указатель нужен для того, чтобы строка не удалялась, пока мы не выйдем из функции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.