Pers.narod.ru. Обучение. Примеры по C++ Builder. Разбиение текста на слова в C++ Builder - ничего парсить не нужно

...методами wcstok, поиском пробелов и табуляций, сортировками списков слов или, тем паче, Сишными функциями вроде strtok (хотя хорошая была функция). Всё гораздо проще:

TStringList *List = new TStringList; // создаем список
  List->DelimitedText = Memo1->Text;
   // загружаем в него текст из мемо-поля
   // (происходит автоматическое разбиение на слова)

Потом пишем нужный обработчик с параметром-списком, например, можно искать самое длинное слово:

int WordLength(TStringList *List) {
 int out = -1, lth = 0;
 for (int i=0; i<List->Count; i++)
 if ( List->Strings[i].Length() > lth ) {
  lth = List->Strings[i].Length();
  out = i;
 }
 return out;
}

В итоге получаем функцию-обработчик вида

void __fastcall TForm1::GoClick(TObject *Sender) {
 if (Memo1->Lines->Count>0) {
  TStringList *List = new TStringList;
  List->DelimitedText = Memo1->Text;
  int index=WordLength(List);
   // вызываем нашу функцию для получения самого длинного слова
  if (index>-1) ShowMessage (List->Strings[index]);
   //и выводим его
  else ShowMessage ("Не найдено");
 }
 else ShowMessage ("Список пуст");
}

 Скачать пример - проект C++ Builder 6 (4 Кб)

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz