На этом шаге мы рассмотрим один из способов преобразования типов.
Как работать с переменными, показано на примере обработчика обычной кнопки, где приведены способы работы со строковыми, числовыми и логическими переменными. Текст обработчика приведен ниже:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //Проверка методов и свойств класса String String^ s="123456789"; String^ s1; //очистка строки s1 = s->Empty; // s1 = "" //сравнение строк s = "12345"; s1 = "12345"; int i1 = s->Compare(s, s1); //i1=0 s1 = "1234"; int i2 = s->Compare(s, s1); //i2=1 s1 = "123458"; int i3 = s->Compare(s, s1); //i3=-1 //сцепление строк: s1=s->Concat(s, s1); //s1="12345123458" //копирование s в s1 s1 = s->Copy(s); //s1="12345" //вставка подстроки, начиная с данного индекса s = s1->Insert(2,"**"); //s=12**345 //поиск и возврат индекса первого вхождения подстроки (45) в данную строку String^ a1 = "123"; String^ a2 = "12345"; i1 = a2->IndexOf("45"); //i1=3 (индекс изменяется от 0) i2 = a2->IndexOf("45", 2); //i2=3 (поиск идет от заданного (2) индекса) i3 = a2->IndexOf("12", 1, 3); //i3=-1 // (вхождения не обнаружено). Поиск идет от заданного индекса (1) и //проверяется заданное количество символов (3) // поиск и возврат индекса последнего вхождения заданной // подстроки в строку a2 = "12121212"; int i = a2->LastIndexOf("12"); //i=6 // Определение длины строки i = a2->Length; //i=8 // Помещение строки (a1) в поле заданной ширины (6 символов), // позиции, оставшиеся незанятыми, слева (справа) заполняются пробелами a2 = a1->PadLeft(6); //a2=" 123" a1 = a2->PadLeft(3); //a1="123" a2 = a1->PadRight(6); //a2=" 123" //Удаление заданного количества символов из строки a1 = "12345678"; a1 = a1->Remove(3, 4); //a1="1238" (удаляет 4 символа, начиная с 3-й позиции) // 3амена всех встречающихся в 1-м параметре символов // на символы из 2-го параметра a1 = "12345678"; a2 = a1; a2 = a1->Replace(a1, "*//*"); // а2="*//*" a1 = "123"; a2 = "456"; a1 = a1->Replace(a1, a2);// a1="456" //Выделение подстроки a1 = "123456"; a2 = a1->Substring(4); // а2 = "56" (выделение подстроки с заданной позиции до конца строки) a1 = "123456"; a2 = a1->Substring(1, 2); //а2="23" //(выделение символов с данной позиции (1-й параметр) в заданном //количестве (2-й параметр)) //Вставка подстроки в строку, начиная с заданного индекса a1 = "123***"; a2 = "456"; a2 = a1->Insert(5, a2); //а2="123**456" //Проверка методов и свойств данных категории Integer //Преобразование числовой строки в 32-целое i = i.Parse("12345"); // i=12345 //целое - в строку a1 = i.ToString(); // a1="12345" //умножение/деление i = i/10; //i=1234 i = i/2; //i=617 i = i*0.5; //i=308 //Работа с float-данными Single b, c; b = 10.100000; c = b*10; //c=101.00000 c = b/10; //c=1.0100000 c = b+c; //c=11.110001 double x, y; x = 10.1; y = b*10; //y=101.0 y = b/10; //y=1.01 //Работа с логическими данными Boolean z, v; z = 01; //z=true v=z & 01; //v=true z = 0; //z=false v = z | 01; //v=true }
В процессе разработки приложений постоянно приходится сталкиваться с необходимостью преобразования данных различных типов одно в другое. Например, дату в формате DateTime надо представить в виде строки, чтобы вывести ее в удобном для пользователя виде, и т. д.
Как преобразовывать данные различных типов? Есть несколько способов. Однако наиболее простой - применение методов специального класса Convert. Примеры преобразования типов данных показаны ниже:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { // Преобразование типов данных Double dNumber = 23.15; //это число преобразуется в различные типы. //Везде идет функция То+имя типа, в который преобразуются //все методы из класса Convert // Returns 23 Int32 iNumber = Convert::ToInt32( dNumber ); //double to int // Returns true Boolean bNumber = Convert::ToBoolean( dNumber ); //double to Boolean // Returns "23.15" String^ strNumber = Convert::ToString( dNumber ); // double to String^ (так же и int to String^) // Returns '2' //String^ to Char Char chrNumber = Convert::ToChar(strNumber->Substring(0, 1)); //сначала выделили один символ // DateTime to String^ String^ s = "01/11/2019"; DateTime d = Convert::ToDateTime(s); String^ s1 = Convert::ToString(d); }
Со следующего шага мы начнем рассматривать компонент Button (кнопка).