Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > String * to _bstr_t


Автор: 3,14 16.2.2005, 21:19
Собственно проблема, как преобразовать String * в _bstr_t?

Автор: srd 16.2.2005, 21:21
Что такое String? Имеется в виду MFC-ый CString или std::string?

Автор: 3,14 17.2.2005, 02:40
System::String

Автор: Borisff2003 17.2.2005, 06:27
Код

System::String

А это не .Net?

Автор: 3,14 17.2.2005, 06:33
Цитата(Borisff2003 @ 17.2.2005, 06:27)
А это не .Net?

Сорри, и впрям не в тот раздел, не обратил внимание что .NET в отдельном smile

Автор: srd 17.2.2005, 07:41
Код

#include "stdafx.h"
#include <comdef.h>

#using <mscorlib.dll>

using namespace System;
using System::Runtime::InteropServices::Marshal;

int _tmain(void)
{
   String *managed_string = S"это строка";

   IntPtr temp = Marshal::StringToBSTR(managed_string);
   _bstr_t bstring(static_cast<BSTR>(static_cast<void *>((temp))), true);
   Marshal::FreeBSTR(temp);
   
   return 0;
}


З.Ы.
Название Visual C++.NET вовсе не подразумевает программирование только для .NET, потому тебя и не понял.

Автор: 3,14 17.2.2005, 09:08
srd, спасибо, работает, тлько чтото уж код больно страшный для преобразования одной строки в другую smile

Автор: srd 17.2.2005, 10:42
А он и не может быть красивым потому, как это не просто преобразование одной строки в другую, а копирование данных из области управляемой памяти в неуправляемую.

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