Архив категории ‘Среда программирования Microsoft Visual C++ 2010’

Пример 12. Объявление дескрипторов в native-типах

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Дескрипторами называют указатели в среде CLR. Именно они указывают на объект в управляемой куче. Напрямую нельзя объявить дескриптор в native-типе. Например, в native-функции вы не можете сделать объявление типа такого: String^ s;     Компилятор вам выдаст ошибку. Файл vcclr.h содержит специальный настраиваемый шаблон gcroot, […]

Пример 11. Преобразование string-строки в String-строку

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Текст программы приведен ниже, а результат - на рисунке 1. // 222_1.cpp: главный файл проекта. #include "stdafx.h" #include <string> #include <iostream> using namespace System; using namespace std; void main() { string str = "test"; //можно записать и так, используя конструктор: //string str = string("test"); […]

Пример 10. Преобразование String-строки в string-строку

    На этом шаге мы приведем программы, реализующие указанные преобразования.     Фирма Microsoft ввела в C++ типы строк string и wstring. На самом деле - это синонимы класса basic_string, введенные через typedef.     Первый тип относится к классу, строки которого (как элементы класса) относятся к типу char, а второй тип - к классу, строки которого […]

Пример 9. Преобразование System::String в wchar_t* или char*

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Метод PtrToStringChars() из vcclr.h можно использовать для преобразования строки System:: String в native-строку типа wchar_t* или char*.     Метод возвращает указатель на Юникод-строку, т. к. строки CLR - это строки Юникода. Затем, как показано в примере, вы можете конвертировать "широкую" строку в обычную.     […]

Пример 8. Преобразование char* в массив System::Byte

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Текст программы приведен ниже, а результат - на рисунке 1. // 219_1.cpp: главный файл проекта. #include "stdafx.h" #include <string.h> //for strlen() using namespace System; using namespace System::Runtime::InteropServices; void main() { char buf[] = "Native String"; int len = strlen(buf); //длина строки array< Byte >^ […]

Пример 7. Доступ к символам в классе System::String

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Это частный случай примера 3. Здесь интересна работа с native-указателем, показывающим на native-строку (строку "обычных" символов) в управляемой куче. Кавычки поставлены для того, чтобы указать на необычность ситуации: каждый символ занимает (в отличие от обычной строки символов типа char) два, а не один байт, […]

Пример 6. Работа с массивом элементов native-структуры в managed-функции

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Текст программы приведен ниже, результат - на рисунке 1. // 217_1.cpp: главный файл проекта. #include "stdafx.h" #include <stdio.h> using namespace System; using namespace System::Runtime::InteropServices; // unmanaged struct struct ListStruct { int count; double* item; }; #pragma unmanaged void UnmanagedTakesListStruct(ListStruct list) { printf_s("[unmanaged] count = […]

Пример 5. Маршаллинг native-структуры

    На этом шаге мы приведем программу, реализующую указанное преобразование.     В данном примере показана работа с native-структурой в managed-функции. Текст программы приведен ниже, результат - на рисунке 1. // 216_1.cpp: главный файл проекта. #include "stdafx.h" #include <stdio.h> #include <math.h> using namespace System; using namespace System::Runtime::InteropServices; #pragma unmanaged //native-структура: struct Location { int x; int […]

Пример 4. Преобразование строки wchar_t в строку String^

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Это преобразование - обратное приведенному в примере 3 предыдущего шага. Преобразование, которое мы рассматриваем, фактически переводит native Юникод-строку в состояние managed. А в этом состоянии со строкой уже можно работать, применяя managed-указатель ^.     Текст программы приведен ниже, а результат - на рисунке 1. […]

Пример 3. Преобразование String^ строки в строку wchar_t

    На этом шаге мы приведем программу, реализующую указанное преобразование.     Тип wchar_t - это native-тип символа по таблице Юникода. Этот тип данного отличается от типа char тем, что символ кодируется двумя байтами, а не одним. Класс String тоже создает строку из Юникод-символов, однако по своему определению относится к managed-типу.     Преобразование, которое мы рассматриваем, […]