C++ Wort in einem char [] finden

Karambo

Ensign
Registriert
Feb. 2008
Beiträge
131
Hallo zusammen!

Ich brauch mal eure Hilfe: Ich habe ein char [256] Array, welches ich mit cin.getline (...) befülle. Beispielsweise würde im Array stehen: "dies ist ein test". Vor cin.getline (...) werden alle char mit '\0' terminiert.
Nun möchte ich, dass der Computer innerhalb dieses Arrays nach einem oder mehreren Wort/Wörtern sucht (unabhängig von der Groß- und Kleinschreibung). Wenn das Array aber nicht exakt aus dem gesuchten Wort besteht, streikt er.

Code:
char cChar [256];

cin.getline (cChar , sizeof (cChar) -1);
if (stricmp (cChar , "Hallo") == 0) cout << endl << "Funktioniert!" << endl;

Ich darf nur "Hallo" oder "hallo" eingeben, kein bspw. "Hallo Computer", sonst kommt kein "Funktioniert!".

Wie komme ich aus diesem Konflikt wieder raus? Ich möchte gerne eine Funktion, die Groß- und Kleinschreibung ignoriert und nur nach einem bestimmten Wort im Array schaut, und, wenn wenigstens ein Teil des Inputs == bestimmtes Wort ist, ein OK gibt.

Vielen, vielen Dank! :)
 
alles klein formatieren und dann mit kleingeschrieben vergleichen.

transformierung zu lowercase:
http://www.daniweb.com/software-development/cpp/threads/21921

in java hätte ich iwie sowas wohl gemacht:

if (variablenName.toLowerCase.equals("hallo")) THEN x
ELSE y

und weil nen array hast und nach dem wort im ganzen suchen willst, einfach nen boolean vor der schleife setzen und bei funktioniert den boolean umstellen + abbruchkriterium integrieren für weitere suche ... und erst nach dem kompletten durchlauf dann abfragen, ob noch auf dem alten wert ist und dementsprechend handeln.
 
Momentan vergleichst du zwei Strings, stricmp wird dir immer nur 0 liefern, wenn die Strings genau gleich sind.

strstr( String1 , String2 ) ist das wonach du suchst, dieser liefert nur NULL, wenn der String nicht enthalten ist.
 
@BxB: Wiillst du nicht noch die Assembler-Version zeigen?

equals ist im Übrigen falsch in Java, es müsste contains sein...
Und "then" gibts in Java nicht..
 
Zuletzt bearbeitet:
getline terminiert den String doch sicherlich selbst, dein Befüllen mit '\0' vorher ist demzufolge überflüssig.
 
Vielen Dank euch allen! Ich kann nicht sagen, wie mich das Problem aufgefressen hat...
Ich habe jetzt statt ein char [] ein string genommen, der sucht dann mit .find () und da durch lowercase alles kleingeschrieben gespeichert wird, erübrigt sich eine spezielle funktion. Danke :D
 
das then war auch nur logischerweise drin. hab erstmal nur then else hingeschrieben und dann noch x und y später draus gemacht.

naja, vllt will ja noch der bezug zum passenden char bzw der zeile passieren, dann wäre mit equals der vergleich besser. contains ist ob es überhaupt enthalten ist im array. da weiss man nur ob und nicht mehr wo.

aber klappt ja nu bei ihm ^^
 
Zurück
Oben