Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 11:26   #1
Timer32
Пользователь
 
Регистрация: 12.09.2011
Сообщений: 16
По умолчанию Преобразование типов в C++

Помогите преобразовать в Visual Studio 2010 C++ тип System::String в std::string.
Попробовал так:
Код:
System::String^ b="";
std::string a=b;
Вылазит ошибка: error C2440: инициализация: невозможно преобразовать "System::String ^" в "std::basic_string<_Elem,_Traits,_A x>"
Timer32 вне форума Ответить с цитированием
Старый 07.11.2011, 12:08   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

это вам для чего такие махинации?
counter вне форума Ответить с цитированием
Старый 07.11.2011, 13:35   #3
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

А так не прокатит?
Код:
std::string a = (std::string) b;
Vadik(R) вне форума Ответить с цитированием
Старый 07.11.2011, 13:36   #4
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

Ну или потыкаться в какие-нибудь методы у System::String.
Vadik(R) вне форума Ответить с цитированием
Старый 08.11.2011, 11:36   #5
Timer32
Пользователь
 
Регистрация: 12.09.2011
Сообщений: 16
По умолчанию

Не не прокатит нужно именно так:
Код:
System::String^ b="";
std::string a=b;
есть же обратное преобразование
Timer32 вне форума Ответить с цитированием
Старый 08.11.2011, 14:26   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Timer32

Помогите преобразовать в Visual Studio 2010 C++ тип System::String в std::string.

Тебе это не нужно.
Подробности почему не нужно - гоогле "Сага о X, Y и Z"
Rififi вне форума Ответить с цитированием
Старый 08.11.2011, 14:39   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Не не прокатит нужно именно так:
ну раз нужно именно так, то делайте как хотите.
правильное преобразование вообще еще длинее пишется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2012, 04:40   #8
iisus92
 
Регистрация: 28.11.2010
Сообщений: 2
По умолчанию

а ответа никто не дал...

Зачем нужно? ну вот у меня, например, есть курсовая работа, там некоторые классы работают с std::string . Затем появилась необходимость замутить быстро для проекта окошко с кнопками да текстбоксами (и т.д. и т.п.). Создаю Windows Forms, там элементы работают с System::String. Как быть?
Мне трогать консольный проект вовсе не нужно, просто сделать графический интерфейс...
iisus92 вне форума Ответить с цитированием
Старый 25.12.2012, 04:57   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)прямого приведения нет и не будет, можете написать свою функу делающую это.
2)использую С++ CLR(C++ для dotNET, нечто среднее между С++ и C#), в общем можно полноценно использовать и сам класс System::String.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2012, 10:48   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Создаю Windows Forms, там элементы работают с System::String. Как быть?
Я бы ваял графический интерфейс вообще отдельно, а консольное приложение превратил бы в .dll. Тогда всё будет хорошо: логика будет в native C++, а графическая оболочка над ней - в .NET.

Упомянутое Вами преобразование точно в таком виде невозможно по ряду причин. К примеру, поскольку std::string - строка символов в однобайтовой кодировке, а System::String - строка Unicode-символов, то где-то надо указать кодовую страницу. Иначе рискуете получить кракозябры.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование типов Svetlana750231 Visual C++ 3 22.04.2011 13:43
Преобразование типов FaTaL Общие вопросы .NET 5 07.03.2011 14:07
Преобразование типов rommster Общие вопросы C/C++ 6 23.11.2010 08:11
преобразование типов Dimarik Общие вопросы C/C++ 1 03.04.2010 16:28
Преобразование типов DeFace Общие вопросы C/C++ 4 24.03.2009 17:06