Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > преобразование String^ to char*


Автор: BaguK 23.12.2007, 19:29
Народ не как не могу перевести из String^ в char*.
Подскажите пожалуйста :(

Автор: stab 23.12.2007, 20:08
цель сего перевода какая?

Автор: BaguK 23.12.2007, 20:27
Вообщем имеется textBox из него нужно взять текст и поместить его в char*, затем из char* в (к примеру) mysql_query(&mysql, quer); quer - char*;
Код

    char *quer;
    quer="insert into student(nz, fio, floor, dateb, adress, tel, faculty, groupe, curs) values(236, 'dd', 'мужской', '1988-12-17', 'ул. Металлургов 8', 33333, 'ЭИТ', 'БА-31', 3);";
    mysql_query(&mysql, quer);


Добавлено через 10 минут и 5 секунд
В принцыпе решение нашел, но не выводит в lable->text, если если русские символы "ВТ-31". С латиницей все окей. Блин кодировка долбанная :(
Код

                 String ^Inp=gcnew String("ВТ-31");
                 pin_ptr<const wchar_t> wch=PtrToStringChars(Inp);
                 size_t Inp_size = wcslen(wch)+1;
                 const size_t newsize=100;
                 size_t i=0;
                 char Out[100];
                 char *c;
                 wcstombs_s(&i, Out, Inp_size, wch, _TRUNCATE);
                 label1->Text=gcnew String(Out);


Автор: stab 23.12.2007, 20:53
хм.. не особо разбираюсь в C++/CLI, может System.Text.Encoding.Default.GetBytes(...), а потом в обычный буфер char-ов.

Автор: BaguK 24.12.2007, 18:13
Пиплс помогите мне, уже в среду сдавать курсавую. Почти все сделал осталось только это релиазовать!

Автор: tdebugger 24.12.2007, 21:37
Код

String ^Inp=gcnew String(L"ВТ-31");
                 pin_ptr<const wchar_t> wch=PtrToStringChars(Inp);
                 int sizeInBytes = (Inp->Length + 1) ;    
                 char    *ch = (char *)malloc(sizeInBytes);             
                 WideCharToMultiByte(
                     0,
                     0,
                     wch,
                     -1,
                     ch,
                     sizeInBytes,
                     NULL,
                     NULL);

                 label1->Text=gcnew String(ch);
                 delete ch;

Ты был рядом...

Автор: BaguK 25.12.2007, 07:20
tdebugger
Огромное спасибо!
Все работает!
Сорри репутацию не могу изменить у меня меньше 100 постов :(

Автор: mr.DUDA 25.12.2007, 14:33
Цитата(BaguK @  25.12.2007,  06:20 Найти цитируемый пост)
Сорри репутацию не могу изменить у меня меньше 100 постов :(

Это не проблема, я добавил tdebugger-у +1 smile

Автор: busylee 29.3.2009, 17:35
 String ^Inp=gcnew String("ВТ-31");
                 pin_ptr<const wchar_t> wch=PtrToStringChars(Inp);
                 size_t Inp_size = wcslen(wch)+1;
                 const size_t newsize=100;
                 size_t i=0;
                 char Out[100];
                 char *c;
                 wcstombs_s(&i, Out, Inp_size, wch, _TRUNCATE);


попробовал что то типо этого реализовать ничего не получилось
VS2008 отругала сказала что PtrToStringChars(...) вообще не знает и тд
может надо библиотеку какую нить подключить?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)