Wie kann ich die Anzahl "_"
in einer Zeichenfolge wie zählen "bla_bla_blabla_bla"
?
c++
string
pattern-matching
andre de boer
quelle
quelle
Antworten:
quelle
std::count
zurückkehrt Typiterator_traits<InputIt>::difference_type
, die für die meisten Standard - Container iststd::ptrdiff_t
, nichtstd::size_t
.Pseudocode:
EDIT: C ++ Beispielcode:
Beachten Sie, dass dieser Code gemeinsam zu verwenden , um mit
std::string
, wenn Sie verwendenchar*
, ersetzen Sies.size()
mitstrlen(s)
.Beachten Sie auch: Ich kann verstehen, dass Sie etwas "so klein wie möglich" wollen, aber ich würde Ihnen empfehlen, stattdessen diese Lösung zu verwenden. Wie Sie sehen, können Sie den Code mithilfe einer Funktion für Sie kapseln, sodass Sie die
for
Schleife nicht jedes Mal ausschreiben müssen, sondern nurcount_underscores("my_string_")
den Rest Ihres Codes verwenden können. Die Verwendung fortgeschrittener C ++ - Algorithmen ist hier sicherlich möglich, aber ich denke, es ist übertrieben.quelle
Altmodische Lösung mit entsprechend benannten Variablen. Dies gibt dem Code etwas Geist.
Bearbeiten: Ungefähr 8 Jahre später, als ich mir diese Antwort anschaue, schäme ich mich, dass ich das getan habe (obwohl ich es mir selbst als snarky stupsen bei einer Frage mit geringem Aufwand gerechtfertigt habe). Das ist giftig und nicht in Ordnung. Ich entferne den Beitrag nicht. Ich füge diese Entschuldigung hinzu, um die Atmosphäre in StackOverflow zu verändern. Also OP: Ich entschuldige mich und hoffe, dass Sie trotz meines Trolling Ihre Hausaufgaben richtig gemacht haben und dass Antworten wie meine Sie nicht davon abgehalten haben, an der Website teilzunehmen.
quelle
quelle
Sie nennen es ... Lambda-Version ... :)
Du brauchst mehrere Includes ... das überlasse ich dir als Übung ...
quelle
Wenn Sie die Lambda-Funktion verwenden, um zu überprüfen, ob das Zeichen "_" ist, wird nur die Anzahl erhöht, andernfalls wird kein gültiges Zeichen verwendet
std::string s = "a_b_c"; size_t count = std::count_if( s.begin(), s.end(), []( char c ){if(c =='_') return true; }); std::cout << "The count of numbers: " << count << std::endl;
quelle
Es gibt verschiedene Methoden von std :: string für die Suche, aber find ist wahrscheinlich das, wonach Sie suchen. Wenn Sie eine Zeichenfolge im C-Stil meinen, ist das Äquivalent strchr. In beiden Fällen können Sie jedoch auch eine for-Schleife verwenden und jedes Zeichen überprüfen. Die Schleife ist im Wesentlichen das, was diese beiden zusammenfassen.
Sobald Sie wissen, wie Sie das nächste Zeichen an einer Startposition finden, setzen Sie Ihre Suche fort (dh verwenden Sie eine Schleife) und zählen dabei.
quelle
Das Zählen von Zeichen in einer Zeichenfolge ist einfach:
quelle
Sie können das Auftreten von '_' in der Quellzeichenfolge mithilfe von Zeichenfolgenfunktionen ermitteln. Die Funktion find () verwendet zwei Argumente: den ersten String, dessen Vorkommen wir herausfinden möchten, und das zweite Argument die Startposition. Während der Schleife wird das Vorkommen bis zum Ende des Quellstrings ermittelt.
Beispiel:
quelle
Ich hätte es so gemacht:
quelle
Ich hätte so etwas gemacht :)
quelle
Versuchen
quelle
quelle