Verstehe String Array nicht
-
Ich lerne, indem ich soviel wie möglich programmier.
Ich wollte einfach es so programmieren, habe aber nicht gewusst, dass die eckige Klammer weg gehört, um den Array ausgeben zu können.
-
Die Eckige Klammer ohne index ist nur bei der Definition zu verwenden, da der Compiler aus der länge des Literals, welches du dem char const* zuweist die Länge selbst berechnen kann.
Ich lerne, indem ich soviel wie möglich programmier.
Um ein gutes Buch wirst du früher oder später nicht herumkommen. Schau mal im Bücherthread hier im Forum nach.
-
Der Tobi schrieb:
länge des Literals, welches du dem char const* zuweist die Länge selbst berechnen kann.
Ein Zeichenkettenliteral hat den Typ
const char[]und nocht const* char.
-
Ich habe in der Zwischenzeit nocheinmal einen kurzen Code aufgesetzt.
Er lautet wie folgt:
#include <iostream> #include <string> using namespace std; int main() { char Array[50000]; cout << "Geben Sie eine Zeichenfolge ein!" << endl; cin >> Array; cout << "Das haben Sie eingegeben: " << endl; cout << Array; return 0; }Das Programm an sich funktioniert, bloß bei der Ausgabe der Eingabe wird immer nur das erste Wort ausgegeben.
Warum ist das so????
Gruß
Max
-
weil std::cin nur bis zum nächsten leerzeichen liest. dazu zählt leertaste, enter und auch tabs
aber das kann man einstellen theoretischwas du suchst ist std::getline
-
Kannst Du bitte ein Beispiel schreiben?
Weil ich habe jetzt in Zeile 10 geschrieben
getline >> Array;und bekomme die Fehlermeldung
Error C2563: Listen der formalen Parameter stimmen nicht überein
-
#include <string> #include <iostream> int main() { std::string str; std::getline(std::cin, str); st::cout << str << std::endl; return 0x0; }
-
Skym0sh0 schrieb:
weil std::cin nur bis zum nächsten leerzeichen liest. dazu zählt leertaste, enter und auch tabs
aber das kann man einstellen theoretischWie kann man das einstellen?
-
ganz simpel scheints nicht zu sein, kannst mal hiergucken
-
Also ich habe jetzt bei mir auf meinem Netbook in Zeile 10 folgendes stehen:
getline (cin Array)"getline" und "Array" sind rot unterringelt.
Bei "getline" kommt die Meldung
Error: Keine Instanz von Überladenen Funktionen "getline" stimmt mit der Argumentenliste überein.Bei "Array" kommt die Meldung
Error: Es wurde ein ")" erwartet.Edit:
Hier steht etwas interessantes und vielleicht was passendes:
http://www.cplusplus.com/reference/iostream/istream/getline/
Ich habe demzufolge jetzt in Zeile 10 folgendes geschrieben:
cin.getline(Array);Dennoch sind der Punkt und die schließende Klammer rot unterringelt.
Beim Punkt kommt die Meldung
Error: Keine Instanz von Überladenen Funktionen "std::basic_istream>_Elem,_Traits>::getline[mit_Elem?char,_Traits?std::char_traits<char>]" stimmt mit der Argumentenliste übereinBei der Klammer kommt die Meldung
Error: Zu wenig Argumente im Funktionsaufruf.
-
Da fehlt ein Komma. Und nicht Array, sondern std::string, wie oben gezeigt.
-
@out:
Siehe edit
-
Zeig mal nochmal deinen jetzigen Code.
-
#include <iostream> #include <string> using namespace std; int main() { char Array[50000]; cout << "Geben Sie eine Zeichenfolge ein!" << endl; cin.getline(Array); cout << "Das haben Sie eingegeben: " << endl; cout << Array << endl; cout << endl; return 0; }
-
#include <iostream> #include <string> using namespace std; int main() { std::string Array; cout << "Geben Sie eine Zeichenfolge ein!" << endl; getline(cin,Array); cout << "Das haben Sie eingegeben: " << endl; cout << Array << endl; cout << endl; return 0; }
-
Ist bei Dir das "getline" nicht rot unterringelt?
-
silent_max schrieb:
Ist bei Dir das "getline" nicht rot unterringelt?
Ne, weils ja richtig ist.

-
Weil bei mir ist es rot unterringelt...
-
Sicher, dass du <string> inkludiert hast?
Sicher, dass du das Komma zwischencinundArraynicht vergessen hast?
-
Ganz Sicher ...
Ach ich lass das jetzt ...
Ich hocke schon seit um 14 Uhr vor dem Netbook... vielleicht sehe ich daher den Fehler nicht.
Aber Dir out ersteinmal danke für die Antworten.
Gruß
Max