Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Конвертация обектов^ к м... обычным

408
28 августа 2008 года
Lei fang
265 / / 01.10.2005
Здравствуйте. Начал писать приложение на VC++ и столкнулся с удивительными вещами :)
Некоторые объекты требуют чтобы их объявляли с ^ (что это такое, я вообще не знаю и впервые вижу, так как впервые пишу прогу с нуля на VC++, а не исправляю чужие)

собственно у меня большая проблема. Как к примеру сконвертировать String^ к std::string? Обратно? String^ к char[]? std::string к Object^?
288
28 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Вообще-то этот оператор используется в упраляемом (managed) С++. Вот краткая цитата из MSDN
Цитата:

Declares a handle to an object on the managed heap.
A handle to an object on the managed heap points to the "whole" object, and not to a member of the object.
See gcnew for information on how to create an object on the managed heap.

408
28 августа 2008 года
Lei fang
265 / / 01.10.2005
Крутая вещь О_о Стало хоть немного понятно
Если я пытаюсь объявить нормальные объекты, то мне вот что пишут:
error C3149: 'System::String' : cannot use this type here without a top-level '^'
Даже все методы типа GetString(), ToString() возвращают именно этот ужас с ^
А как сконвертировать-то его? Вот я хочу из текст бокса перевести текст в std::string
textBox2->Text возвращает String^ и что делать?

Естественно просто приравнять их не катит. ругается что нельзя так делать с объектами высшего уровня %)
12K
28 августа 2008 года
lifs
163 / / 06.09.2007
по поводу конвертированя в массив char'ов
в int можно сконвертироватьс помощью Int32::Parse(String^ s)
408
28 августа 2008 года
Lei fang
265 / / 01.10.2005
Благодарю, то что надо. Проблема решена (надеюсь не получу за это сообщение предупреждение. Во всяком случае же надо сообщить другим людям что помощь больше не требуется, да и добавить репутацию не получается почему-то. Пишет что я должен добавить ее кому-то другому, перед тем как смогу снова добавить ее для lifs, хоть уже сто лет прошло с того момента, как я добавлял ее ему)
10K
22 июля 2009 года
Cybernetic
106 / / 22.07.2009
А как можно осуществить конвертацию из ATL::CString в System::String^ ?
Вроде бы, банальный метод System::Convert::ToString должен работать, да предупреждение

"'const wchar_t *' : forcing value to bool 'true' or 'false' (performance warning)"

все портит. Эта функция действительно возвращает "true". Что нужно сделать, что получить строку типа System::String^ ?
288
22 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Видимо где-то так.

 
Код:
CString strTest = "Hello, World";
System::String ^ strTest2 = gcnew System::String( (LPCTSTR)strTest );
12K
22 июля 2009 года
lifs
163 / / 06.09.2007
Цитата: Cybernetic
А как можно осуществить конвертацию из ATL::CString в System::String^ ?
Вроде бы, банальный метод System::Convert::ToString должен работать, да предупреждение

"'const wchar_t *' : forcing value to bool 'true' or 'false' (performance warning)"

все портит. Эта функция действительно возвращает "true". Что нужно сделать, что получить строку типа System::String^ ?



 
Код:
System::String ^str = gcnew System::String(atlCstring.GetString());
10K
22 июля 2009 года
Cybernetic
106 / / 22.07.2009
[QUOTE=nikitozz]Видимо где-то так.

 
Код:
CString strTest = "Hello, World";
System::String ^ strTest2 = gcnew System::String( (LPCTSTR)strTest );
[/QUOTE]

[QUOTE=lifs]
 
Код:
System::String ^str = gcnew System::String(atlCstring.GetString());
[/QUOTE]

Спасибо, товарищи, оба варианта работают)) Вобщем то, как я понял, здесь главное оператор gcnew, который создает новый объект... Про него то я и не знал.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог