Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Проблемы со строковыми типами


Автор: zhenium 21.5.2007, 21:44
Добрый вечер всем!
У меня такой вопрос.

Как правильно преобразовывать тип string в AnsiString? Чтобы, к примеру, использовать 
для вывода в Edit или Memo и т.д.

Код

// ...
    std :: string message = "Hello!";
    Edit1->Text = message;    
// ...


Вылетет такая ошибка: E2034 Cannot convert '_STL :: string' to 'AnsiString'.
Вот с типом char всё понятно, а тут проблема возникает.

Понимаю, вопрос ламерский, но я только недавно стал изучать Билдер, многого не знаю.

P.S. Прошу модераторов сильно на меня не злиться, в поиске ничего подходящего не нашёл...

Автор: Anikmar 21.5.2007, 21:51
Может попробовать как-то так?
Edit1->Text = AnsiString(message.c_str());

Автор: zhenium 21.5.2007, 22:18
О, отлично!
Получается!
Спасибо большое!
Я сам долго колупался, но ничего не получалось!

Автор: HappyLife 22.5.2007, 12:19
zhenium, Зачем Вам sdt::string?

Код

    AnsiString message = "Hello!";
    Edit1->Text = message;    

А при указанном ввыше, коде, выполняются лишние для компилятора и программы операции.

Автор: Klin 22.5.2007, 14:24
http://forum.vingrad.ru/index.php?showtopic=150106&view=findpost&p=1125736

Автор: Anikmar 22.5.2007, 15:45
Цитата(HappyLife @  22.5.2007,  12:19 Найти цитируемый пост)
А при указанном ввыше, коде, выполняются лишние для компилятора и программы операции. 

Тогда уж проще так:
Edit1->Text = "Hello";
 smile 
Я просто сразу показал и как из string получается char* и как из char* получается AnsiString, а заодно использование конструктора без явного создания объекта.
 smile 
И вообще, Klin, прав. Это конечно FAQ

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