Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2022-10-29 | 22 |
5.00
из
|
Заказать работу |
(http://msdn.microsoft.com/ru-ru/library/system.text.stringbuilder.aspx)
Пример использования строки StringBuilder:
System::Text::StringBuilder sb = gcnew
System::Text::StringBuilder(" Иран – азиатская страна ");
sb[3] = ' к ';
System::Console::WriteLine(sb->ToString());
// Вывод: Ирак – азиатская страна
Пример выделения строке StringBuilder нужного объема памяти:
System::Text::StringBulder sb1 = gcnew
System::Text::StringBuilder(128);
System::Text::StringBulder sb2 = gcnew
System::Text::StringBuilder("abcdef", 16);
Таблица 3.2. Основные свойства и методы класса System::Text::StringBuilder
Имя | Описание |
Свойства | |
Capacity | Возвращает или задает максимальное число знаков, которое может содержаться в памяти, назначенной текущей строке StringBuilder. |
Chars [i] | Возвращает или задает символ на указанной позиции (i) в текущей строке StringBuilder. |
Length | Возвращает или задает длину текущей строки StringBuilder. |
MaxCapacity | Возвращает максимальную емкость текущей строки StringBuilder (определяется значением Int32.MaxValue). |
Методы | |
Append(V); | Добавляет к текущей строке строковое представление указанного значения любого типа (V). |
Append(ch); Append(ch,n); | Добавляет к текущей строке строковое представление указанного символа Unicode (ch) или заданное число его копий (n). |
Append(arrCh[]); Append(arrCh[],i,L); | Добавляет к текущей строке строковое представление всех символов Unicode из указанного массива (arrCh) или L его элементов, начиная с i-го. |
Append(s); Append(s,i,L); | Добавляет к текущей строке копию указанной строки (s, типа String) или подстроки, начиная с i-го индекса и длиной L знаков. |
AppendFormat(sf,v1); AppendFormat(sf,v1,v2); AppendFormat(sf,v1,v2,v3); AppendFormat(sf,arrV[]); | Добавляет к текущей строке строковое представление одного, двух или трех указанных объектов (v1, v2, v3), либо элементов массива (arrV), выполненное в соответствии с элементами формата (см. п.4.2) в указанной строке (sf). |
AppendLine(); AppendLine(s); | Добавляет копию указанной строки (s, типа String) и знак завершения строки в конец текущей строки. |
Clear(); | Удаляет все символы из текущей строки (аналогичен ука-занию 0 (ноля) в свойстве Length строки StringBuilder). |
CopyTo(i1,arrCh[],i2,L); | Копирует заданное число символов (L) из текущей строки, начиная с указанной позиции (i1), и вставляет в массив символов (arrCh), начиная с i2-элемента (заменяя их). |
EnsureCapacity (n); | Устанавливает максимальную емкость текущей строки (StringBuilder) не меньше указанного значения (n). |
Insert(i, V); | Вставляет в текущую строку, начиная с i-ой позиции, строковое представление указанного значения любого типа (V). |
Insert(i, c h); | Вставляет в текущую строку, начиная с i-ой позиции, строковое представление указанного символа Unicode (ch). |
Insert(i,arrCh[]); Insert(i,arrCh[],i2,L); | Вставляет в текущую строку, начиная с i-ой позиции, стро-ковое представление всех символов Unicode из указанного массива (arrCh) или L его элементов, начиная с i2-го. |
Insert(i,s); Insert(i,s,n); | Вставляет в текущую строку, начиная с i-ой позиции, одну или n копий указанной строки (s, типа String). |
Remove(i,L); | Удаляет указанный диапазон символов (L знаков, начиная с i-го) из текущей строки. |
Replace(ch1,ch2); Replace(ch1,ch2,i,L); | Замещает в текущей строке или подстроке (L знаков, начиная с i-го) все вхождения указанного символа (ch1) на другой указанный символ (ch2). |
Replace(s1,s2); Replace(s1,s2,i,L); | Замещает в текущей строке или подстроке (L знаков, начиная с i-го) все вхождения указанной строки (s1) на другую указанную строку (s2). |
ToString(); ToString(i,L); | Преобразует к типу String значение текущей строки или подстроки (L знаков, начиная с i-го). |
Пример3.8. Использование свойств Capacity, MaxCapacity и Length, а также методов EnsureCapacity, ToString.
#include "stdafx.h"
using namespace System;
using namespace System::Text;
int main() {
// Создание строк StringBuilder
StringBuilder^ sb1 = gcnew StringBuilder("abc");
StringBuilder^ sb2 = gcnew StringBuilder("abc", 16);
Console::WriteLine("a1) sb1->Length = {0}, sb1->Capacity = {1}",
sb1->Length, sb1->Capacity);
Console::WriteLine("a2) sb2->Length = {0}, sb2->Capacity = {1}",
sb2->Length, sb2->Capacity);
Console::WriteLine("a3) sb1->ToString() = \"{0}\", " +
"sb2->ToString() = \"{1}\"",
sb1->ToString(), sb2->ToString());
Console::WriteLine("a4) sb1->MaxCapacity = {0}, " +
"sb2->MaxCapacity = {1}",
sb1->MaxCapacity, sb2->MaxCapacity);
sb1->EnsureCapacity(50);
Console::WriteLine("\nМаксимально допустимое число знаков " +
"в строке sb1 увеличено до 50.");
Console::WriteLine("b1) sb1->Length = {0}, sb1->Capacity = {1}",
sb1->Length, sb1->Capacity);
Console::WriteLine("b2) sb2->Length = {0}, sb2->Capacity = {1}",
sb2->Length, sb2->Capacity);
Console::WriteLine("b3) sb1->ToString() = \"{0}\", " +
"sb2->ToString() = \"{1}\"",
sb1->ToString(), sb2->ToString());
sb1->Length = 0;
Console:: WriteLine ("\ n Установка длины строки sb 1 в 0.");
sb2->Capacity = 51;
Console::WriteLine("Максимально допустимое число знаков " +
"в строке sb2 увеличено до 51.");
Console::WriteLine("c1) sb1->Length = {0}, sb1->Capacity = {1}",
sb1->Length, sb1->Capacity);
Console::WriteLine("c2) sb2->Length = {0}, sb2->Capacity = {1}",
sb2->Length, sb2->Capacity);
Console::WriteLine("c3) sb1->ToString() = \"{0}\", " +
"sb2->ToString() = \"{1}\"",
sb1->ToString(), sb2->ToString());
Console::ReadLine();
return 0;
}
/* Вывод:
a1) sb1.Length = 3, sb1.Capacity = 16
a2) sb2.Length = 3, sb2.Capacity = 16
a3) sb1.ToString() = "abc", sb2.ToString() = "abc"
a4) sb1.MaxCapacity = 2147483647, sb2.MaxCapacity = 2147483647
Максимально допустимое число знаков в строке sb1 увеличено до 50.
b1) sb1.Length = 3, sb1.Capacity = 50
b2) sb2.Length = 3, sb2.Capacity = 16
b3) sb1.ToString() = "abc", sb2.ToString() = "abc"
Установка длины строки sb1 в 0.
Максимально допустимое число знаков в строке sb2 увеличено до 51.
c1) sb1.Length = 0, sb1.Capacity = 50
c2) sb2.Length = 3, sb2.Capacity = 51
c3) sb1.ToString() = "", sb2.ToString() = "abc"
*/
Пример 3.9. Использование методов Append, AppendFormat, Insert и Replace класса StringBuilder для изменения значения строки.
#include "stdafx.h"
using namespace System;
using namespace System::Text;
int main() {
// Создание строки StringBuilder максимальной емкостью
// до 50-ти символов и ее инициализация значением "ABC".
StringBuilder^ sb = gcnew StringBuilder("ABC", 50);
// Добавление 3-х символов в конец строки StringBuilder.
sb->Append(gcnew array<Char>{ 'D', 'E', 'F' });
// Добавление строки формата в конец строки StringBuilder.
sb->AppendFormat("GHI{0}{1}", (Char)'J', (Char)'k');
// Вывод длины строки StringBuilder и ее содержимого.
Console::WriteLine(" {0} симв.: {1} ", sb->Length, sb->ToString());
// Вставка подстроки в самое начало строки StringBuilder.
sb->Insert(0, "Алфавит: ");
// Замена всех вхождений символа "k" символом "K".
sb->Replace('k', 'K');
// Вывод длины строки StringBuilder и ее содержимого.
Console::WriteLine(" {0} симв.: {1} ", sb->Length, sb->ToString());
Console::ReadLine();
return 0;
}
// Вывод:
// 11 симв.: ABCDEFGHIJk
// 20 симв.: Алфавит: ABCDEFGHIJK
Структура System::Char
(http://msdn.microsoft.com/ru-ru/library/system.char.aspx)
Таблица 3.3. Основные поля и методы структуры Char.
Имя | Описание |
Поля | |
MaxValue | Представляет наибольшее возможное значение типа Char. Это поле является константой. |
MinValue | Представляет наименьшее возможное значение типа Char. Это поле является константой. |
Методы | |
CompareTo(ch); | Сравнивает текущий символ с заданным символом (ch) (в порядке сортировки) и возвращает целое число (Int32): – отрицательное число, если текущий символ предшествует ch; – ноль, если текущий символ и ch имеют одну и ту же позицию в порядке сортировки; – положительное число, если текущий символ стоит после ch. |
GetNumericValue(ch); GetNumericValue(s,i); | Преобразует указанный числовой символ Unicode (ch – символьное представление цифры) или такой символ в указанной позиции (i) заданной строки (s) в число двойной точности с плавающей запятой. |
GetUnicodeCategory(ch); GetUnicodeCategory(s,i); | Относит указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к группе, определенной одним из значений перечисления System.Globalization.UnicodeCategory (возвращая соответствующее строковое значение): "UppercaseLetter" – буква верхнего регистра; "LowercaseLetter" – буква нижнего регистра; "DecimalDigitNumber" – знак десятичной цифры в диапазоне от 0 до 9; "LetterNumber" – число, представленное буквой вместо десятичной цифры; например, обозначение римской цифры пять – "V"; "SpaceSeparator" – символ пробела; "LineSeparator" – символ, используемый для разделения строк текста; "ParagraphSeparator" – символ, используемый для разделения абзацев; "Control" – управляющий символ кода со значением в Unicode, равным U+007F либо находящемся в диапазоне от U+0000 до U+001F или от U+0080 до U+009F (например, ACK, BEL, CR, FF, LF и VT); "ConnectorPunctuation" – знак пунктуации, являющийся соединителем двух знаков (_); "DashPunctuation" – знак тире или дефиса; "OpenPunctuation" – открывающий символ для одного из парных пунктуационных знаков, таких как круглые, квадратные и фигурные скобки; "ClosePunctuation" – закрывающий символ для одного из парных пунктуационных знаков, таких как круглые, квадратные и фигурные скобки; "InitialQuotePunctuation" – открывающий или начальный знак кавычки («); "FinalQuotePunctuation" – закрывающий или заключительный знак кавычки (»); "OtherPunctuation" – знак пунктуации, который не является соединителем, тире, открывающим или закрывающим знаком пунктуации, начальной или заключительной кавычкой (!@#%&*;:’.,”/?\); "MathSymbol" – математические символы (+=~<>); "CurrencySymbol" – символ денежной единицы ($); "ModifierSymbol" – символ модификатора, который указывает на изменения окружающих его символов (^`); "OtherSymbol" – символ, который не является математическим символом, символом денежной единицы или символом модификатора (№). |
IsControl(ch); IsControl(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории управляющих символов (возвращает true или false). |
IsDigit(ch); IsDigit(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории десятичных цифр (возвращает true или false). |
IsLetter(ch); IsLetter(s,i); | Показывает, относится ли указанный знак Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории букв Unicode (возвращает true или false). |
IsLetterOrDigit(ch); IsLetterOrDigit(s,i); | Показывает, относится ли указанный знак Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории букв или десятичных цифр (возвращает true или false). |
IsLower(ch); IsLower(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории букв нижнего регистра (возвращает true или false). |
IsNumber(ch); IsNumber(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории цифр (возвращает true или false). |
IsPunctuation(ch); IsPunctuation(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории знаков препинания (возвращает true или false). |
IsSeparator(ch); IsSeparator(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории знаков-разделителей (возвращает true или false). |
IsSymbol(ch); IsSymbol(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории символьных знаков (возвращает true или false). |
IsUpper(ch); IsUpper(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории букв верхнего регистра (возвращает true или false). |
IsWhiteSpace(ch); IsWhiteSpace(s,i); | Показывает, относится ли указанный символ Unicode (ch) или символ в указанной позиции (i) заданной строки (s) к категории пробелов (возвращает true или false). |
Parse(s); | Преобразует значение указанной строки (s), содержащей один знак или null, в эквивалентный символ Unicode. |
ToLower (ch); ToUpper (ch); | Преобразует значение символа Unicode (ch) в его эквива-лент соответственно в нижнем или верхнем регистре. |
ToString(); ToString(ch); | Преобразует значение текущего или указанного символа Unicode (ch) в эквивалентное ему строковое представление. |
TryParse(s, ch); | Преобразует значение указанной строки (s), содержащей один знак или null, в эквивалентный возвращаемый символ Unicode (ch). Метод возвращает значение true или false, указывающее, успешно ли выполнено преобразование. |
Пример 3.10. Применение методов CompareTo, GetNumericValue, GetUnicodeCategory, IsControl, IsDigit, IsLetter, IsLetterOrDigit, IsLower, IsNumber, IsPunctuation, IsSeparator, IsSymbol, IsUpper, IsWhiteSpace, Parse, ToLower, ToUpper, ToString, TryParse объекта Char.
#include "stdafx.h"
using namespace System;
int main(array<System::String^> ^args) {
wchar_t wch;
char chA = 'A';
char ch1 = '1';
String^ st = "G";
String^ str = "Test string";
Console::WriteLine(chA.CompareTo('B'));
// Вывод: "-1" (значение 'A' меньше чем 'B')
Console::WriteLine(Char::GetNumericValue(ch1)); // Вывод: "1"
Console::WriteLine(Char::GetUnicodeCategory(ch1));
// Вывод: "DecimalDigitNumber"
Console::WriteLine(Char::GetUnicodeCategory(str, 0));
// Вывод: "UppercaseLetter"
Console::WriteLine(Char::IsControl('\t')); // Вывод: "True"
Console::WriteLine(Char::IsDigit(ch1)); // Вывод: "True"
Console::WriteLine(Char::IsLetter(',')); // Вывод: "False"
Console::WriteLine(Char::IsLetterOrDigit(ch1)); // Вывод: "True"
Console::WriteLine(Char::IsLower('u')); // Вывод: "True"
Console::WriteLine(Char::IsNumber(ch1)); // Вывод: "True"
Console::WriteLine(Char::IsPunctuation('.')); // Вывод: "True"
Console::WriteLine(Char::IsSeparator(str, 4)); // Вывод: "True"
Console::WriteLine(Char::IsSymbol('+')); // Вывод: "True"
Console::WriteLine(Char::IsUpper('G')); // Вывод: "True"
Console::WriteLine(Char::IsWhiteSpace(str, 4)); // Вывод: "True"
Console::WriteLine(Char::Parse("S")); // Вывод: "S"
Console::WriteLine(Char::ToLower(chA)); // Вывод: "a"
Console::WriteLine(Char::ToUpper('m')); // Вывод: "M"
Console::WriteLine(Char::ToString('x')); // Вывод: "x"
Console::WriteLine("{0} {1}", Char::TryParse(st, wch), wch);
// Вывод: "True G"
Console::ReadLine();
return 0;
}
Строки в стиле C
Объявление и инициализация строки.
Объявляется строка также как и массив элементов типа char:
char st [7];
При инициализации строки можно перечислить символы внутри фигурных скобок:
char st[7] = {'S', 't', 'r', 'i', 'n', 'g', '\0' };
или указать строку внутри двойных кавычек char:
st [7] = " String ";
Если размер массива при объявлении не указать, то он будет определен автоматически в соответствии с длиной строки
char st[] = "String"; // или char *st("String");
Присваивать строку в двойных кавычках можно только при инициализации. Попытка присвоить строку позже приведет к ошибке.
char st [7];
st = " String "; // Ошибка!!!
Объявление массива строк выглядит так
char st[][20] = { "String1", "String2", "String3" };
std::cout << st[0] << std::endl; // String1
std::cout << st[l] << std::endl; // String2
std::cout << st[2] << std::endl; // String3
или так:
char *st[] = { "Stringl", "String2", "String3" };
std::cout << st[0] << std::endl; // Strmg1
std::cout << st[1] << std::endl; // Stnng2
std::cout << st[2] << std::endl; // Stnng3
Доступ к символам внутри строки.
Доступ к элементу массива может осуществляться как по индексу (нумерация начинается с нуля), указанному внутри квадратных скобок, так и с использованием адресной арифметики.
char st [] = " String ";
std::cout << st[l] << std::endl; // t
std::cout << *(st + 1) << std::endl; // t
Символ можно не только получить таким образом, но и изменить:
char st [] = " String ";
st [0] = ' s '; // Изменение с помощью индекса
*(st + 1) = 'Т'; // Изменение с помощью указателя
std::cout << st << std::endl; // sTring
Перебор символов строки.
Выведем все символы строки в прямом и обратном порядке.
char st[] = "String";
int len = st:: strlen (st); // Определение длины строки (6)
// Выводим символы в прямом порядке
for (int i = 0; i < len; ++i) {
std::cout << st[i] << std::endl;
}
std:: cout << "-------------------" << std:: endl;
// Выводим символы в обратном порядке
for (int j = len - 1; j >= 0; --j) {
std::cout << st[j] << std::endl;
}
Количество символов лучше получать вне цикла или присваивать значение переменной в первом параметре цикла fo r. Например:
for (int i = 0, len = std::strlen(st); i < len; ++i) {
std::cout << st[i] << std::end1;
}
Объединение строк.
Для объединения двух строк используется функция streat(). Например:
char st 1[40] = "Не стыдно не знать,";
char * st 2(" стыдно не учиться.");
strcat(stl, st2);
cout << stl << endl;
Функция streat() возвращает указатель на первый параметр, поэтому последние два оператора предыдущего фрагмента можно заменить одним:
cout << strcat(stl, st2) << endl;
Пример объединения строки из предыдущего фрагмента с помощью функции strncat().
cout << strncat (stl, st 2, 18) << endl;
// Вывод: Не стыдно не знать, стыдно не учиться
Копирование строк.
Копирование строк позволяет выполнять функция str cpу() с двумя параметрами. Например:
const size_t LENGTH = 22;
char source[LENGTH] = "Век живи - век учись.";
char destination[LENGTH];
cout << " Целевая строка: " << strcpy(destination, source) << endl;
Функция str cpу() копирует строку source в строку destination и возвращает указатель на целевую строку, на экран будет выведено следущее:
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!