Стандартный класс StringBuilder — различия между версиями
Ulysses (обсуждение | вклад) м (→Пример: + uses System.Text) |
Ulysses (обсуждение | вклад) (Отмена правки 3869 участника Ulysses (обсуждение)) |
||
Строка 4: | Строка 4: | ||
==Пример== | ==Пример== | ||
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли. | Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли. | ||
− | <source lang="pascal"> | + | <source lang="pascal">function ConcatInput : string; |
− | |||
− | |||
− | |||
− | function ConcatInput : string; | ||
begin | begin | ||
var sb := new System.Text.StringBuilder(); | var sb := new System.Text.StringBuilder(); |
Текущая версия на 11:51, 25 мая 2011
Назначение
Часто возникает необходимость в последовательной модификации некоторой строки (например, при чтении набора строк с консоли и объединении их в одну строку). Стандартный тип string PascalABC.NET и его операция += неэффективны в таких ситуациях (происходит многократное создание новых объектов строк). Для этого случая в пространстве имён System.Text имеется специальный класс StringBuilder. Результирующая строка хранится внутри этого класса, модифицируется с помощью методов этого класса, а перед окончанием работы получается вызовом метода ToString класса StringBuilder.
Пример
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли.
function ConcatInput : string;
begin
var sb := new System.Text.StringBuilder();
var line : string;
while true do
begin
Readln(line);
if line = '' then
break;
sb.Append(line); // аналог +=
end;
result := sb.ToString; // преобразование sb к строке
end;