Приведение типов в VC++.NET
От: yurikl http://www.yurikl.h.com.ua/
Дата: 26.01.08 22:26
Оценка:
Доброго времени суток!
Подскажите: как в VC++.NET осуществить приведение типов System::String к char*.
Заранее благодарен.
Re: Приведение типов в VC++.NET
От: ak_miass Россия  
Дата: 28.01.08 10:09
Оценка: 3 (1)
Здравствуйте, yurikl, Вы писали:

Y>Подскажите: как в VC++.NET осуществить приведение типов System::String к char*.


System::Runtime::InteropServices::Marshal::StringToHGlobalUni ->
System::IntPtr::ToPointer ->
WideCharToMultiByte ->
System::Runtime::InteropServices::Marshal::FreeHGlobal.
Re[2]: Приведение типов в VC++.NET
От: yurikl http://www.yurikl.h.com.ua/
Дата: 28.01.08 13:45
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, yurikl, Вы писали:


Y>>Подскажите: как в VC++.NET осуществить приведение типов System::String к char*.


_>System::Runtime::InteropServices::Marshal::StringToHGlobalUni ->

_>System::IntPtr::ToPointer ->
_>WideCharToMultiByte ->
_>System::Runtime::InteropServices::Marshal::FreeHGlobal.


Спасибо огромное.
Re[2]: Приведение типов в VC++.NET
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.01.08 15:49
Оценка: 2 (1)
Здравствуйте, ak_miass, Вы писали:

Y>>Подскажите: как в VC++.NET осуществить приведение типов System::String к char*.


_>System::Runtime::InteropServices::Marshal::StringToHGlobalUni ->

_>System::IntPtr::ToPointer ->
_>WideCharToMultiByte ->
_>System::Runtime::InteropServices::Marshal::FreeHGlobal.

А чего так жестко? В MSDN IMHO попроще будет:

MSDN: How to: Convert System::String to wchar_t* or char*
MSDN: How to: Convert Between Various String Types
Re[2]: Приведение типов в VC++.NET
От: yurikl http://www.yurikl.h.com.ua/
Дата: 31.01.08 14:25
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, yurikl, Вы писали:


Y>>Подскажите: как в VC++.NET осуществить приведение типов System::String к char*.


_>System::Runtime::InteropServices::Marshal::StringToHGlobalUni ->

_>System::IntPtr::ToPointer ->
_>WideCharToMultiByte ->
_>System::Runtime::InteropServices::Marshal::FreeHGlobal.


Воспользовался указанными функциями, а все равно ничего не получается.
Может, где-то я ошибку допустил. Вот код:

// charstring — результат конвертации
// cl — длина charstring в байтах
// stringW — строка источник
//
void StringToChars (char* charstring, unsigned int cl, System::String^ stringW)
{
size_t ll = stringW->Length;
System::IntPtr ipt = System::Runtime::InteropServices::Marshal::StringToHGlobalUni(stringW);
//System::IntPtr::ToPointer
void* pt = ipt.ToPointer();
LPBOOL bb = false;
WideCharToMultiByte(CP_ACP,WC_DEFAULTCHAR,(LPCWSTR)pt,ll,charstring,cl,"_",bb);
System::Runtime::InteropServices::Marshal::FreeHGlobal(ipt);
return;
}
Подскажите, что я делаю не правильно.
Заранее благодарен.
Re[3]: Приведение типов в VC++.NET
От: ak_miass Россия  
Дата: 01.02.08 08:09
Оценка: 3 (1)
Здравствуйте, yurikl, Вы писали:

Y>Воспользовался указанными функциями, а все равно ничего не получается.


Так работает?
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)pt,ll,charstring,cl,NULL,NULL);
Re[4]: Приведение типов в VC++.NET
От: yurikl http://www.yurikl.h.com.ua/
Дата: 02.02.08 12:29
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, yurikl, Вы писали:


Y>>Воспользовался указанными функциями, а все равно ничего не получается.


_>Так работает?

_>
_>WideCharToMultiByte(CP_ACP,0,(LPCWSTR)pt,ll,charstring,cl,NULL,NULL);
_>



Так работает. Спасибо огромное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.