Разбиение текста на слова в 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 Кб)
14.10.2010, 09:08 [14188 просмотров]