Borland C++ VCL FAQ Страница 3.
|
Страница 3 из 13
Как узнать, сколько символов в строке? Для этого надо воспользоваться функцией 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); |