Klasa Wyraz

Zaimplementuj klasę Wyraz służącą do obsługi łańcuchów znaków składających się wyłącznie z liter. Klasa Wyraz:

  wykorzystuje kolekcję vector do przechowywania liter (ewentualnie, prostsza wersja może wykorzystywać tablicę znaków lub obiekt string).
  przeciąża operator « wrzucający przechowywany wyraz do strumienia wyjściowego ostream
  przeciąża operator » czytający dokładnie jeden wyraz ze strumienia wejściowego istream. Pamiętaj, że wyrazy w strumieniu mogą być oddzielone od siebie dowolną ilością znaków nie będących literami. Przy wczytywaniu napisu należy zignorować wszystkie początkowe znaki aż do momentu pojawienia się litery zaczynającej wyraz. Jeśli nastąpił błąd odczytu lub w strumieniu nie znalazły się litery wówczas tworzony jest wyraz pusty.
  przeciąża operator < porównujący dwa wyrazy. Przy porównywaniu małe i duże litery traktujemy równoważne, wiec wyraz “Ala”, “ala” i “ALA” są identyczne.
  konstruktor domyślny tworzy pusty wyraz
  konstruktor kopiujący

Wykorzystaj kolekcję Map oraz klasę Wyraz do stworzenia słownika zgodnie z poniższa treścią zadania.

Napisz program generujący słownik wyrazów zawartych w dowolnym pliku tekstowym. Dla podanego pliku (lub po wczytaniu tekstu ze strumienia wejściowego) program wyświetla posortowaną alfabetycznie listę występujących w tekście wyrazów oraz liczbę wytapiań danego wyrazu w tekście.

Przykładowe wyjście programu:

ala 5 kota 2 ma 1

Duże i małe znaki są nierozróżnialne - słownik wypisuje wyłącznie słowa pisane małymi literami

Zakładamy, że: pojedyncze słowo to dowolny ciąg znaków alfabetycznych (wyłącznie litery [a-zA-Z]). Wszystkie pozostałe znaki są separatorami wyrazów.