 |
Перевод System::String ^ в массив типа char - Вопросы и ответы, обсуждения - Ваши вопросы по C/C++ только в данном разделе |
14.03.2013, 16:29
|
#1
|
|
|
|
Пехотинец
|
 Регистрация: 10.10.2011
 Сообщений: 65
 Популярность: 772
 Сказал(а) спасибо: 58
Поблагодарили 58 раз(а) в 33 сообщениях
|
Перевод System::String ^ в массив типа char
вообщем то сабж как это организовать...
уже пытался но пишет
невозможно преобразовать "wchar_t" в "char [13]"
1> Не существует преобразований в типы массивов, хотя существуют преобразования в ссылки или указатели на массивы
кодинг попытки
PHP код:
Struct.Login = Convert::ToChar(textBox1->Text);
|
|
|
15.03.2013, 22:00
|
#2
|
|
|
|
Пехотинец
|
 Регистрация: 10.10.2011
 Сообщений: 65
 Популярность: 772
 Сказал(а) спасибо: 58
Поблагодарили 58 раз(а) в 33 сообщениях
|
Re: Перевод System::String ^ в массив типа char
больше не надо сам разобрался
|
|
|
17.03.2013, 09:41
|
#3
|
|
|
|
Старший сержант
|
 Регистрация: 04.02.2011
 Сообщений: 198
 Популярность: 12244
 Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
|
Re: Перевод System::String ^ в массив типа char
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
больше не надо сам разобрался
|
|
 |
|
 |
|
ну раз разобрался, то покажи реализацию... возможно кому-то понадобится подобное...
вот один из вариантов:
Код:
private: Void _ToCharM(char* pcOut, int nOutLen, String^ sIn)
{
try
{
array<Byte>^ bytes = System::Text::Encoding::Default->GetBytes(sIn);
nOutLen = Math::Min(nOutLen - 1, bytes->Length);
System::Runtime::InteropServices::Marshal::Copy(bytes, 0, IntPtr(pcOut), nOutLen);
pcOut[nOutLen] = '\0';
}
catch (...)
{
pcOut[nOutLen] = '\0';
}
}
Код:
const int buf = 512;
char myBuffer[buf];
_ToCharM(myBuffer, buf, textBox->Text); // Перевод из String^ в char[]
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
|
|
|
17.03.2013, 19:49
|
#4
|
|
|
|
Сержант
|
 Регистрация: 01.10.2011
 Сообщений: 128
 Популярность: 5723
 Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
|
Re: Перевод System::String ^ в массив типа char
или так
Код:
wchar_t* ManagedToNativeString(System::String^ str)
{
msclr::interop::marshal_context context;
std::wstring result = context.marshal_as<std::wstring, System::String^>(str);
return result.c_str();
}
char* ManagedToNativeString(System::String^ str)
{
msclr::interop::marshal_context context;
std::string result = context.marshal_as<std::string, System::String^>(str);
return result.c_str();
}
________________
Talk is cheap. Show me the code
— Linus Torvalds
Последний раз редактировалось Yukikaze; 17.03.2013 в 21:45.
|
|
|
Пользователь сказал cпасибо:
|
|
17.03.2013, 21:23
|
#5
|
|
|
|
Пехотинец
|
 Регистрация: 10.10.2011
 Сообщений: 65
 Популярность: 772
 Сказал(а) спасибо: 58
Поблагодарили 58 раз(а) в 33 сообщениях
|
Re: Перевод System::String ^ в массив типа char
я сделал немножко проще =_=
превёл юникод
char* StringToChar(System::String^ str)
{
char* ch;
pin_ptr<const wchar_t> wch = PtrToStringChars(str);
size_t convertedChars = 0;
size_t sizeInBytes = ((str->Length + 1) * 2);
ch = (char *)malloc(sizeInBytes);
wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes);
return ch;
}
а потом использовал strncpy  может это не проще но мне помогло
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:25.
|
 |