Стандартный класс StringBuilder — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
м (Пример: + uses System.Text)
(Отмена правки 3869 участника Ulysses (обсуждение))
 
Строка 4: Строка 4:
 
==Пример==
 
==Пример==
 
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли.
 
Приведём подпрограмму для решения такой задачи: с консоли вводится последовательность строк, завершающаяся пустой строкой. Создать строку, получающуюся объединением строк, введённых с консоли.
<source lang="pascal">uses System.Text;
+
<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;