Главная страница

Борис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П


Скачать 17.38 Mb.
НазваниеБорис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П
АнкорMS Visual C.pdf
Дата04.08.2018
Размер17.38 Mb.
Формат файлаpdf
Имя файлаMS Visual C.pdf
ТипДокументы
#22453
страница37 из 37
1   ...   29   30   31   32   33   34   35   36   37
String-
строку
Текст программы показан в листинге 14.12, а результат — на рис. 14.12. Рис 14.12. Результат преобразования string в Листинг 14.12

// 14.12_2011 Прим 11.cpp : main project file.
#include "stdafx.h"
#include
#include using namespace System; using namespace std; int main()
{ string str = "test";
можно записать итак, используя конструктор
//string str = string("test"); cout << str << endl;
метод c_str() класса string преобразует строку в обычную С-строку с символом '\0' в качестве признака конца строки. строка такого признака конца не имеет, и этот символ может быть обычным ее символом. строка — это аналог строки в С+ Builder*/

490 Часть II. Приложения Windows Form
String^ str2 = gcnew String(str.c_str());
Console::WriteLine(str2);
Console::ReadLine();
} Пример 12. Объявление дескрипторов в native

-
типах
Дескрипторами называют указатели в среде CLR. Именно они указывают на объект в управляемой куче. Напрямую нельзя объявить дескриптор в типе. Например, в функции вы не можете сделать объявление типа такого
String ^s; Компилятор вам выдаст ошибку. Файл vcclr.h содержит специальный настраиваемый шаблон gcroot
, позволяющий ссылаться на объекты из С+ кучи, те. объекты из неуправляемой кучи могут ссылать на объекты из управляемой кучи. Тем самым устанавливается связь между различными средами. При этом вам позволяется использовать дескриптор в типы (например, в функции) и трактовать его как основной тип. Шаблон gcroot создан на основе класса
System::Runtime::InteropServices::GCHandle
, который обеспечивает дескрипторами объекты в управляемой куче. Отметим, что сами дескрипторы автоматически удаляются деструктором класса gcroot только тогда, когда они больше не используются. Их нельзя удалять вручную. Если же вы создаете объект в куче (те. в неуправляемой, то должны сами вызвать оператор delete для освобождения ресурса. В режиме исполнения программы поддерживается постоянная связь между дескриптором и CLR- объектом, на который он указывает. Если объект по тем или иным причинам перемещается в куче, дескриптор всегда возвращает новый адрес объекта. Переменная не может получить указатель (предохраняющий объект от перемещения в такой куче, пока она назначена шаблону Текст программы показан в листинге 14.13, а результат — на рис. 14.13. Рис 14.13. Работа с дескриптором в native
- памяти
Глава
14. Преобразование между нерегулируемыми и
регулируемыми указателями Листинг 14.13
// 14.13_2011 Прим 12.cpp : main project file.
#include "stdafx.h"
#include using namespace System;
// reference_to_value_in_native.cpp
// compile with: /clr public value struct V структура
{
String ^str;
}; class Native класс
{ public:
член класса — дескриптор v_handle:*/ gcroot< V^ > v_handle;
}; int main() функция
{
Native native; переменная, объявленная в функции
V v; переменная дескриптору присваивается значение v, те. формируется ссылка на структуру, из которой теперь можно извлекать ее элементы native.v_handle = v; native.v_handle->str = "Hello to all";
Console::WriteLine("String in V: {0}", native.v_handle->str);
Console::ReadLine();
} Пример 13. Работа с дескриптором в native
-
функции
Текст программы показан в листинге 14.14, а результат — на рис. 14.14. Рис 14.14. Результат работы managed
- типа в native
- функции

492 Часть II. Приложения Windows Листинг 14.14
// 14.14_2011 Прим 13.cpp : main project file.
#include "stdafx.h"
#include "gcroot.h"
#include using namespace System;
#pragma managed class StringWrapper класс
{ private: gcroot x; public: метод присваивает члену х класса
(те. дескриптору) адрес строки "ManagedString" в управляемой куче
StringWrapper()
{
String ^ str = gcnew String("ManagedString"); x = str;
}
/*метод-член класса присваивает переменной targetStr значение дескрипторах, который указывает на строку "ManagedString", и выводит эту строку void PrintString()
{
String ^ targetStr = x;
Console::WriteLine("StringWrapper::x == {0}", targetStr);
}
};
#pragma unmanaged int main() функция
{
StringWrapper s; переменная типа s.PrintString(); печать строки "ManagedString"
_getch();
}
Предметный указатель
#include 25
A
ASCII 28, 37, 80, 89
Atof 83
Atoi 83
B
Bool 87
Break 102
C
Case 102 Си С 321
Cin 189
CLR 16, 107
CLS 245
ColorDialog 407 С 298
Continue 103
Cout 189
D
DataSet 423
DateTimePicker 357
DialogResult 251
Double 45
E
Else 50
Else-If 96
Exit 65, 170
F
Fclose 166
Feof 169
Fgetc 166
Fgets 166
FILE 165
FontDialog 407
Fopen 165
Foreign key 419
Form 201
Fprintf 168
Fputc 166
Fputs 166
Friend 147
Fscanf 168
Fseek 167
Fstream 178
Ftell 168
G
Gcnew 108
Getch 23
Getchar 37
Gets 178
Goto 104
GroupBox 342
H
Header file 25
Hide 208
I
If 47

494 Предметный указатель 95
Ifstream 178
ImageList 253
Ios 178
Istream 178
K
KeyDown 263
L
Label 258
LinkLabel 343
ListBox 288
ListView 274
Long 43
M
Main() 17, 23, 25, 28, 33, 35
Malloc 106
MaskedTextBox 317
MenuStrip 266
MS SQL Server 414
N
NET Framework, 245
NULL 106
O
OpenFileDialog 395
Ostream 178 О 178
P
PictureBox 354
PrintDialog 408
Printf 28, 33, 173
ProgressBar 394
Properties 201
Putchar 37
Puts 178
R
RadioButton 338
ReadMe.txt 23
Rewind 168 с 20
S
Save All 28
SaveFileDialog 401
Scanf 176
ShortcutKeys 270
Sizeof 189
Solution 19
Solution (решение) 19
Solution Explorer 20
Sprintf 79, 177
Sscanf 178
Static 70
Stdafx.cpp 23
Stdafx.h 23
Stderr 172
Stdin 172
Stdout 172
Strcat 80
Strcmp 80
Strcmpi 80
Strcpy 79
Strlen 80
Switch 100
T
TabControl 373
TButton 250
TextBox 259
Timer 390
TLabel 258
TPanel 255
Trigger 413
Typedef 121
V
Virtual 147
W
WebBrowser 282
While 29, 32
Windows Form 1, 197
Предметный указатель
А
Абстрактные классы 158 Адрес первого элемента массива 61 Арифметические операции 33 Атрибут unsigned 43
Б
Битовые поля 138 База данных 413
В
Ввод и вывод в Св С+ 178 Ввод строки символов с клавиатуры 59 Вкладка
Property Pages 207
Events 205
Toolbox 216 Включение блока на языке ассемблера 75 Внешний ключ 419, 420 Внешняя переменная 66 Возврат к структуре стола по умолчанию 10 Выбор индексов 420 Вызов функции 72 Выпадающие меню 8 Выражение 35
Вьюеры 415
Г
Главная функция 19 Главное окно 7 Группировка набора окон 9
Д
Движение окрашенных линий 390 Двоичное дерево 133
Деструктор 144 класса 156 Дизайнер форм 216 Добавление новых форм к проекту 220 Домашний телефонный справочник 324
З
Заголовок функции 72 Заголовочная часть оператора For 103 Запуск компилятора 23 Знак "присвоить" 31 Значения параметров функции по умолчанию 73
И
Имена и типы переменных 30 Индекс 420 массива 52 Инициализация массива 55 Инкапсуляция 144 Интерфейсные функции 163 Использование шаблонов функций 76
К
Как создать свой внешний файл 69 Категории памяти 139 Класс 141
Form 216 Классы 143 и структуры 156 компоненты 144 Клиенты 414 Ключевое слово inline 74 Кнопки быстрого вызова 8 Кодирование по Unicode 37 Компиляция и сборка проекта 15 Компоненты, форма и ее модули 146 Консольное приложение 15, 17 Константы 88 символьного типа 88 Конструктор 144 класса 153 Контекстное меню редактора кода 210 Контекстное меню формы 219 Концепция объектно-ориентированного программирования 141 Куча 149
Л
Логическая операция && 50 Логическая операция || 50 Логические операции 90 Локальные БД 414 Локальные переменные 66
М
Манипуляторы и функции стандартного ввода/вывода в С+ 190

496 Предметный указатель
Маршалинг 471
Маршаллизация 108 Маска 317 Массив 51 Массивы указателей 117 Место описания функции в программе 59 Метка 104 Метод двоичного поиска 127 половинного деления 96 Методы класса 142 Многомерные массивы 54 Модель базы данных 415
Н
Наборы данных 423 Наследование 145 Настройка редактора кода 212 Некоторые методы формы 235 Некоторые файлы проекта 202 Нерегулируемые указатели 107 Нормализации 415 Нумерация битов в числе 85
О
О справочной системе Help 13 Область действия идентификатора 74 переменной 69 Обращение к элементам структур 122 Объект 141
Объектно-ориентированное программирование 141 Объявление и определение функции 73 Ограничение доступа к элементам меню
270 Одномерные массивы 51 Окно
Properties 204 сведений об объекте 204 Оператор
#define 35
-- 44
++ 44 Присвоить" (особенности) 50
Do…While 83
New и Delete 149
For 34
Return 58, 61
Switch 102 Оператор в С/С++ 23 Операторы SQL 421 Операторы и блоки 95 Операция
\\ 47
<< и >> 179 отношения 89, 90 запятая" 63 деления 33 отрицания 90 Операции и выражения присваивания 93 Операции над указателями 111 Определение функции 72 Опции окна 10 Организация работы с множеством форм
221 Основные функции для работы с файлами в С 166
П
Палитра компонентов 217 Первичный ключ 418, 419 Перегрузка функций 75 Передача функции адресов 59 Перечислимый тип данных 86 Побитовые логические операции 92 Подключение библиотечного и собственного файла к программе 67 Подсчет количества слов в файле 48 количества строк в файле 47 символов в файле 42, 44 Полиморфизм 146 Поля класса 142 Преобразование числовых данных 249 Преобразования типов данных 91 Признак комментария 39 конца строки 52, 60 конца строки символов 63 конца файла 38 Примеры создания классов 147 Принудительное преобразование к типу 91 Принципы построения классов 144 Программа копирования символьного файла 39, 42 на С/С++ 28 подсчета количества встречающихся в тексте слов 133 с аргументами-указателями 112
Предметный указатель с аргументами-функциями 118 где функция — член структуры 123 отладчик 61 Программы с использованием классов 147 со структурами 125 Проектирование баз данных 414 таблиц 417 Пространство имен 180
System 246 Прототип функции 73 Прямоугольные таблицы 414
Р
Работа с бинарным файлом 187 датами 365 классом fstream 181 классом ifstream 185 классом ofstream 184 логическими данными 249 переменными типа String 247 целыми и вещественными переменными
248 Рабочий стол среды С+ 7 Размерность массива 52 Регистрация пользователя в приложении
380 Регулируемый указатель 16, 107 Редактор кода 208 Рекурсивные функции 72 Рекурсия в структурах 133 Рисование графиков в форме 237
С
Свойства класса 142 формы 221 Серверы 414 Символические константы 35 Символьные данные 37
Cмысл квалификатора unsigned 86
Cтруктура FILE 165 События формы 234 Создание проекта приложения 197 простого шаблона функции 76 функций 57 Специальный тип void(), 57 Ссылочный тип классов 156 Стандартный ввод cin 193 Стандартный ввод/вывод в С 172 Стандартный ввод/вывод в С+ 189 Стандартный вывод cout 189 Статическая переменная 74 Статические функции 158 Стековая память 58 Структура программ в VC++ 15 Структуры 120 и функции 125 Суфлер кода 212
Т
Таблица кодов ASCII, структура 52 Тело функции 72 Тип auto 32 Типы данных 23 Точка с запятой 31 Транзакция 419 Триггер 413
У
Удаленные БД 414 Указатели 105
* и ^ 16, 108 this 208 и массивы 109 на функции 118 символов и функций 113 Унарная операция 90 Уникальный ключ 419 Управляющий символ 28 Условие окончания цикла 32, 33, 35 Условное выражение 95
Ф
Формальные параметры 58 Форматные строки даты и времени 359 Функция стандартного ввода/вывода в С 172 char 84 malloc() 92 Функция выделения подстроки из строки 62 копирования строки в строку 63

498 Предметный указатель
Х
Хранимые процедуры 413
Ч
Числа c плавающей точкой 31
Э
Экземпляр структуры 138
Эхо-сопровождение 40
Я
Язык SQL 420
1   ...   29   30   31   32   33   34   35   36   37


написать администратору сайта