C++ char array bestimmt Stelle auslesen
-
Folgendes Problem ich möchte gerne das der Benutzer in ein char schreibt und ich dann jeden einzelnen buchstaben/Zahl einzeln abfragen kann bzw. weitergeben an andere Funktionen. Hab es mit char[i] nicht hinbekommen
-
Unbekanter schrieb:
Hab es mit char[i] nicht hinbekommen
Damit können wir nicht viel anfangen, bitte erkläre genauer.
-
so:
#include <iostream> #include <string> void andereFunktion (char einzelnerBuchstabe) { std::cout << einzelnerBuchstabe << ";"; } int main () { using namespace std; string einChar; cout << "Bitte Text eingeben (Ende mit <Return>):\n"; getline (cin, einChar); for (auto einzelnerBuchstabe: einChar) andereFunktion (einzelnerBuchstabe); cout << endl; }
-
Hab den fehler in meinem programm gefunden aber habe eine andere Frage wie kann man den Inhalt eines arrays messen, also wie viel zahlen/buchstaben da drin sind.
sizeof() gibt mir nur die Größe des arrays wieder
-
/ sizeof(typ)
-
Wenn ich sizeof(meinchar) eingebe kommt 20 (meine array größe)
Wenn ich aber sizeof(char) mache kommt 1
Und deshalb funktioniert sizeof(meinchar) / sizeof(char) irgendwie nicht
-
20 geteilt durch 1 ergibt 20. Dein Array ist 20 elemente lang.
Von char-arrays zur verarbeitung von zeichenketten ist abzuraten, verwende lieber std::string (fürs erste. Irgendwann solltest du dir aufjedenfall mal unicode anschauen, aber bis dahin dauert es sicher noch ein wenig).
-
Was stimmt denn an der 20 nicht?
sizeof(char)
ist per Definition 1
-
Ich möchte gern wissen wie viele Elemente der User eingegeben hat und nicht wie viel in das array reinpassen
-
sizeof gibt nur an wie groß das array tatsächlich ist, und nicht wie weit es gefüllt ist.
String.legth() sollte dir da weiterhelfen.
-
Bzw. bei einem char-Array
strlen
-
Thx ihr habt mir sehr geholfen
-
Wenn man selber mit einer Schleife durch einen C-String geht, überprüft man auf den Terminator und nicht auf
strlen
Aber
std:string
wäre besser.