Strings vergleichen
-
Ich hab folgendes Problem und zwar muss ich die unten angegeben Aufgabenstellung lösen:
Schreiben Sie die Funktion
bool StringBeginsWithSubstring(const char* str, const char* subStr)die true zurueck gibt, falls die Zeichenkette str mit der Zeichenkette subStr beginnt. Beide
Zeichenketten werden wie ¨ublich mit 0 terminiert. Verzichten Sie dabei auf Hilfsmittel
aus <cstring>, wie beispielsweise strlen.#include <iostream> #include <string> using namespace std; string str="We think in generalities, but we live in details."; string str2 = str.substr (0,2); size_t pos = str.find("we"); bool foo() { if (str.compare(str2) == 0) return true; if (str.compare(str2) != 0) return false; } int main () { cout << foo () << endl; }mein bisheriger code... ich glaub da steht nur müll drine, aber ich weiß nicht wie ich das ohne hilfe von strlen zum laufen bringen soll

Danke im vor raus, und sorry wenn ich die Aufgabe so direkt rein schreibe aber ich weiß nicht wie ich das Problem umschreiben sollte.
nehme jeden tipp dankend an

-
Na, dann zeig mal, wie du es mit strlen zum Laufen bringen würdest.
-
Erstmal denke ich, dass ohne Hilfsmittel auch ohne string bedeutet. Bin mir auch nicht sicher, ob du weißt, dass string keine 0 Terminierung hat.
Naja du kannst einfach erstmal die Längen beider Zeichenketten abfragen und dann in einer for-Schleife die subStr Zeichekette durchgehen und in jedem for-Schleifendruchgang ein str-Zeichen mit einem subStr-Zeichen vergleiche. Sobald es eine Ungleichheit gibt, machst du return flase. Wenn str kleiner als subStr ist, machst du am Anfang return false. Am Ende der FUnktion schreibst du return true. Irgendwie so kannst du das machen
-
bool StringBeginsWithSubstring( const char* str, const char* subStr ) { for( ; *subStr != 0; ++str, ++subStr ) if( *str != *subStr ) return false; // str ist kürzer als oder ungleich subStr return true; }
-
