На этом шаге мы приведем программу, реализующую указанное преобразование.
Это частный случай примера 3. Здесь интересна работа с native-указателем, показывающим на native-строку (строку "обычных" символов) в управляемой куче. Кавычки поставлены для того, чтобы указать на необычность ситуации: каждый символ занимает (в отличие от обычной строки символов типа char) два, а не один байт, т. к. находится в управляемой куче. Поэтому и признак конца - это не обычный символ '\0', a L'\0' ("длинный" нуль).
Текст программы приведен ниже, а результат - на рисунке 1.
// 218_1.cpp: главный файл проекта. #include "stdafx.h" #include <vcclr.h> using namespace System; void main() { String^ mystring = "abcdefg"; // Описание метода показано в примере 3 interior_ptr<const Char> ppchar = PtrToStringChars( mystring ); // цикл по строке символов: от нулевого (*ppchar) // до признака конца строки (L'\0') for ( ; *ppchar != L'\0'; ++ppchar ) Console::Write(*ppchar); Console::Write(L'\n'); //переход на новую, после выданной, строку Console::ReadLine(); }
Рис.1. Доступ к символам System::String-строки
На следующем шаге мы рассмотрим преобразование char* в массив System::Byte.