Verstehe String Array nicht
-
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
-
silent_max schrieb:
...vor dem Netbook...
hehe^^, vllt ist ja das der fehler

welchen compiler bzw. welche IDE benutzt du denn?
-
silent_max schrieb:
Ist bei Dir das "getline" nicht rot unterringelt?
Du benutzt ein char - Array. getline möchte aber einen string haben.
Also nicht:char Array[50000];sondern:
string myVariable; getline(cin, myVariable);Außerdem schreibst Du im Thread-Titel was von String-Arrays, in Deinem Code dreht sich aber alles um char-Arrays ... was genau möchtest Du denn nun wirklich?