Строки C++/CLI и нормальные...
Managed C++ провалился, в первую очередь, из-за дикого синтаксиса. По крайней мере, мне так кажется. Туда же идёт и C++/CLI... Зачем он вообще нужен? Возможно, полезную сферу сему продукту можно найти в "приклеивании" старых C++-библиотек и кодов к современным интерфейсам. Ну, если мало ABI с Platform Invoke.
Мда, на самом деле, хотел пару строк о строках для памяти вбить:
Преобразовать System::String в "прибитую" wide char строку (wchar_t *)
System::String ^ s = "String"; pin_ptr <const wchar_t> wchar_s = PtrToStringChars (s);
Подключить
#include <vcclr.h>
глобально, то бишь, в начале файла до всех прагм.
При "прибивании" объекту запрещается перемещаться в куче при сборке мусора.
Это полная кака, так как куча фрагментируется и "прибивание" потом мешает сборщику мусора.
Преобразовать System::String в строку ANSI C
using namespace Runtime::InteropServices; System::String ^s="String"; const char *p = (const char*) (Marshal::StringToHGlobalAnsi (s)).ToPointer ();
Преобразовать ANSI-строку в System::String
const char * ptr = "ANSI"; System::String ^ str = gcnew System::String (ptr);
31.01.2014, 22:36 [11749 просмотров]