Borland C++ VCL FAQ
Страница 3.



Как узнать, сколько символов в строке?


Для этого надо воспользоваться функцией Length.

Как удалить в строке концевые пробелы?


Это делают функции Trim, TrimLeft и TrimRight соответственно с обоих концов, только с начала и только с конца.

Работа с фрагментами строки


AnsiString предоставлякт возможность поиcка(Pos), вставки(Insert), удаления(Delete) и получения копии(SubString) фрагмента текста в строке:
AnsiString ansi_string = "Строка";
int index = ansi_string.Pos("ка"); /* найдем окончание слова */
if( index != 0 ) {
ansi_string.Insert("чеч",index); /* теперь строка имеет вид "Строчечка" */
ansi_string.Delete(index,2); /* а теперь - "Строчка" */
}

Как зарезервировать строке определенный размер

Иногда бывает нужно зарезервировать для строки пространство, достаточное для хранения определенного количества символов. Сделать это можно при помощи функции SetLength

Строки( AnsiString ) - преобразования - другие типы

Исходная ссылка: - - - Частично преобразования значений в/из AnsiString рассмотрены в теме "Строки(AnsiString) - общие вопросы"
Кроме того, возможны следующие преобразования:

AnsiString в целочисленный тип(int,long):

AnsiString int_as_AnsiString = "123";

int int_as_int_1 = int_as_AnsiString.ToInt();

int int_as_int_2 = StrToInt(int_as_AnsiString);


AnsiString в число с плавающей точкой(float,double):

AnsiString float_as_AnsiString = "3.14";

float float_as_float_1 = float_as_AnsiString.ToDouble();

float float_as_float_2 = StrToFloat(float_as_AnsiString);


AnsiString <-> цвет(TColor):

AnsiString ansi_string = "clBtnText";

TColor color = StringToColor(ansi_string); /* цвет в строку */

AnsiString color_string = ColorToString(clWhite); /* строку в цвет */ 

AnsiString <-> курсор(TCursor):

AnsiString ansi_string = "crHandPoint";

TCursor cursor = StringToCursor(ansi_string); /* строка в курсор */

AnsiString cursor_string = CursorToString(crHelp); /* курсор в строку */ 

Строки( AnsiString ) и бинарные файлы

Запись в двоичный файл

Для того, чтобы записать AnsiString в бинарный файл, его нужно сначала преобразовать к массиву char.
Пример записи в файл:
TFileStream *out = new TFileStream("info", fmCreate); // создаем файл
f( out != NULL ) {
  AnsiString text = "www.sources.ru"; // исходная строка
  int size = text.Length();
  out->Write(&size, sizeof(size));
  if( size != 0 ) out->Write(text->data(), size); 
 
elete out;

Чтение из двоичного файла


Пример реализации:
AnsiString text;
FileStream *in = new TFileStream("info",fmOpenRead); // открываем файл 
f( in != NULL ) {
  int size;
  in->Read(&size, sizeof(size));
  if( size != 0 ) {
     try {
        text.SetLength(size);
        in->Read((void *)(text.data()), size);
     } catch( EOutOfMemory& ) {}
  } 
 
elete in; 
howMessage(text);
 
« Предыдущая статья   Следующая статья »