C++. Робота з рядками. Клас System.String




Робота з рядками. Клас System.String


Зміст


Пошук на інших ресурсах:

1. Як ініціалізувати змінну типу String?
String ^s1 = "873"; // s1 = "873"


2. Як очистити рядок типу String?
String ^s1 = "Hello!";
String ^s2;
s2 = s1;        // s2 = "Hello!"
s2 = s1->Empty; // s2 = ""


3. Як визначити чи рівні два рядки типу String між собою?
String ^s1 = "Hello!";
String ^s2 = "Hello!";
int res;
if (s1 == s2) res = 1;
else res = 0;


4. Як порівняти два рядки типу String в лексикографічному порядку?

У цьому випадку можна використати метод Compare(). Метод повертає -1, 0 або 1.

String ^s1 = "Hello!";
String ^s2 = "Hello";
int res;
res = s1->Compare(s1,s2); // res = 1
res = s2->Compare(s2,s1); // res = -1
res = s2->Compare(s1,s2); // res = 1
s2 = s1;
res = s1->Compare(s1,s2); // res = 0
res = s1->Compare(s2,s1); // res = 0






5. Як з’єднати два рядки типу String?

Спосіб №1 – функція Concat().

String ^s1 = "Hello ";
String ^s2 = "world!";
String ^s3;
s3 = s1->Concat(s1,s2); // s3 = "Hello world!"

Спосіб № 2. Оператор “+“.

String ^s1 = "Hello ";
String ^s2 = "world!";
String ^s3;
s3 = s1 + s2;  // s3 = "Hello world!"


6. Як скопіювати один рядок типу String в інший?
String ^s1 = "My String";
String ^s2;
s2 = s1;     // s2 = "My String"


7. Копіювання рядків типу String з використанням методу Copy().
String ^s1 = "MyString ";
String ^s2;
s2 = s1->Copy(s1);    // s2 = "My String"


8. Вставка підрядка починаючи з заданого індексу. Функція Insert().

Для вставки підрядка використовується функція Insert(). Функція приймає два параметри. Перший параметр – позиція індексу в рядку, з якої робиться вставка (починається з 0). Другий параметр – текст самого рядка.

String ^s1 = "123789";
String ^s2;
s2 = s1->Insert(3, "456"); // s2 = "123456789"
s1 = "123789";
s2 = s1->Insert(0, "456"); // s2 = "456123789"

// помилка компіляції з повідомленням:
// "Specified argument was out of the range of valid values"
// "Parameter name: startIndex"
// s2 = s1->Insert(19, "456");

Позиція індексу у функції Insert() починається з 0.


9. Пошук і повернення індексу першого входження підрядка в даний рядок.

Реалізується функцією IndexOf(). Якщо знайдено підрядок у рядку, то функція повертає позицію першого входження. В іншому випадку функція повертає -1.

Функція має перевантажені варіанти реалізації.

String ^s1 = "Hello world!";
int index;
index = s1->IndexOf("wor"); // index = 6
index = s1->IndexOf("ab");  // index = -1 => не знайшло підрядок "ab" в рядку "Hello world!"
index = s1->IndexOf("wor",7); // index = -1 - пошук з позиції 7
index = s1->IndexOf("wor",0); // index = 6 - пошук з позиції 0

// пошук йде від заданого індексу (3)
// і перевіряється задана кількість символів (5)
index = s1->IndexOf("wo",3,5); // index = 6


10. Пошук і повернення індексу останнього входження підрядка в даний рядок функцією LastIndexOf().
String ^s1 = "text-text-text";
int index;
index = s1->LastIndexOf("text"); // index = 10


11. Як визначити довжину рядка типу String?

Для визначення довжини рядка типу String використовується властивість Length.

String ^s1 = "abcdef";
int len;
len = s1->Length; // len = 6
s1 = "";
len = s1->Length; // len = 0


12. Створення рядка заданої ширини. Демонстрація функцій PadLeft() та PadRight().

Функції PadLeft() та PadRight() використовується для створення форматованого рядка, в якому позиції справа або зліва заповнюються пробілами.

String ^s1 = "abc";
String ^s2;
s2 = s1->PadLeft(5); // s2 = " abc"
s2 = s1->PadLeft(2); // s2 = "abc"
s2 = s1->PadLeft(9); // s2 = "     abc"

// помилка "Non-negative number required."
// s2 = s1->PadLeft(-2);

s2 = s1->PadRight(3); // s2 = "abc"
s2 = s1->PadRight(8); // s2 = "abc     "


13. Видалення заданої кількості символів з рядка функцією Remove().
String ^s1 = "0123456789";
String ^s2;
s2 = s1->Remove(3,2); // s2 = "01256789"


14. Заміна всіх символів у рядку. Функція Replace().
String ^s1 = "0123456789";
String ^s2;
s2 = s1->Replace(s1,"22"); // s2 = "22"


15. Як у рядку виділити підрядок. Функція Substring().
String ^s1 = "Automobile";
String ^s2;

// варіант № 1 - виділяє підрядок з заданої
// позиції до кінця рядка
s2 = s1->Substring(4); // s2 = "mobile"

// варіант № 2 - виділяє підрядок з заданої
// позиції (параметр 1) у заданій кількості символів (параметр 2)
s2 = s1->Substring(0,4); // s2 = "Auto"


16.Перетворення числового рядка в 32-бітне ціле число. Функція Parse().
// String => int
int i;
String ^s1 = "280";
i = i.Parse(s1);    // i = 280
i = i.Parse("-32"); // i = -32


17. Перетворення цілого числа в рядок. Функція ToString().
// int => String
int i;
String ^s1;
i = 350;
s1 = i.ToString(); // s1 = 350


18. Перетворення рядка в дійсне число.

При перетворенні рядка в дійсне число важливо враховувати кодування символів.

Якщо у вас встановлено операційну систему з кириличним кодуванням і налаштовані відповідні регіональні стандарти, тоді символ ‘.‘ має бути замінений на символ ‘,‘. Це пов’язано з тим, що в країнах які використовують кирилицю розділювачем між цілою і дробовою частинами є символ ‘,‘ (кома). А в англомовних країнах розділювачем цілої і дробової частин є символ ‘.‘ (крапка).

Символ-розділювач цілої та дробової частини можна змінити в регіональних налаштуваннях Windows.

Тому, в ОС Windows з кириличним кодуванням за замовчуванням, наступний код викличе виключну ситуацію FormatException з повідомленням: “Input string was not in a correct format“.

// String => double
double x;
String ^s1;

s1 = "12.87";
// генерується виключна ситуація FormatException
// з повідомленням "Input string was not in a correct format."
x = x.Parse(s1);

Нижче наведено правильний варіант для ОС з кириличним кодуванням:

// String => double
double x;
String ^s1;
s1 = "12,87"; // тут все добре
x = x.Parse(s1); // x = 12.87


19. Перетворення дійсного числа в рядок.
// double => String
double x;
String ^s1;
x = -3.568;
s1 = x.ToString(); // s1 = "-3.568


20. Переведення значення змінної логічного типу в рядок.
// String => bool
bool b;
String ^s1;
s1 = "true";
b = b.Parse(s1); // b = True


Зв’язані теми