C++ :: Aufgabe #22 :: Lösung #2
4 Lösungen

#22
Text nach Wörtern untersuchen
Anfänger - C++
von Dome
- 29.12.2012 um 01:37 Uhr
Ein Text und das Wort was gesucht werden soll, soll eingegeben werden. Daraufhin soll ausgegeben wie oft das Wort in dem Text vorhanden ist.
Konsolenausgabe:
Eingabe Text: Das ist mein Beispieltext.
Welches Wort soll gesucht werden: ist
Das Wort "ist" wurde 1 mal gefunden.
#2

von Sone (2570 Punkte)
- 04.01.2013 um 09:38 Uhr
Schnell hingefrickelt:
C-Code

#include <string> #include <iostream> #include <iterator> #include <sstream> #include <algorithm> template<typename IterT> size_t count(IterT first1, IterT last1, IterT first2, IterT last2) { size_t rval = 0; do first1 = std::search(first1, last1, first2, last2); while( first1 != last1 && (std::advance(first1, std::distance(first2, last2)), ++rval) ); return rval; } template<typename CharT, typename CharTraits, typename AllocT> size_t count(std::basic_istream<CharT, CharTraits>& is, std::basic_string<CharT, CharTraits, AllocT> const& str) { size_t rval = 0; std::basic_string<CharT, CharTraits, AllocT> tmp; do is >> tmp; while( is && ( rval += (tmp == str), true ) ); return rval; } int main() { std::string str; std::getline(std::cin, str); std::cout << "Zu suchendes Wort: "; auto word = *std::istream_iterator<std::string>(std::cin); std::istringstream stream(str); std::cout << "Die Zeichenfolge \"" << word << "\" kam " << count(str.begin(), str.end(), word.begin(), word.end()) << " mal vor.\n" "Das Wort \"" << word << "\" kam " << count(stream, word) << " mal vor."; }
Konsolenausgabe:
Dies ist ein Satz in dem Mist steht.
Zu suchendes Wort: ist
Die Zeichenfolge "ist" kam 2 mal vor.
Das Wort "ist" kam 1 mal vor.
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1