Шаг 129.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Работа с переменными некоторых типов

    На этом шаге мы рассмотрим один из способов преобразования типов.

    Как работать с переменными, показано на примере обработчика обычной кнопки, где приведены способы работы со строковыми, числовыми и логическими переменными. Текст обработчика приведен ниже:

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 (кнопка).




Предыдущий шаг Содержание Следующий шаг