frage zu char
-
Wie geht folgendes???:
Der Benutzer macht eine Eingabe bestehend aus Text, nun soll das natürlich in einer Variablen gespeichert werden. Die Eingabe soll aber variabel groß sein.
Mit char hätte ich dann das Problem, dass ich schon vorher eine Größe festlegen muss. Wenn ich char dann 10000 groß mach, der benutzer aber nur 12 eingibt ist das speicherplatzverschwendung.
Oder ich würde es char direkt zuweisen, also in etwa so:char text[] = cin;
Nur hab ich keine Ahnung wie so etwas gehen soll.
Ich hoffe ihr habt verstanden was ich mein und könnt mir helfen
-
was mich interessiert
warum benutzen leute noch char für ganze satzeingaben und nicht einfach die string klasse?
ne wo liegt der vorteil/nachteil der beiden? Also ich benutze immer die stringklasse.
-
1.: string benutzen!
2.: Wenns unbedingt sein muss, könntest du einen pointer auf char untrhalten, den kannste vergrößern->aufwendig
3.: vielleichtchar a[]=cin.str()
oder
char a[]=cin.str().c_str()
Aber
#include <string> #include <iostream> string e; cin>>e; //liest ein Wort ein e=cin.getline()//richtig??? cout<<e;
halte ich für besser.
-
danke für die antworten.
ich hab strings noch nicht gelernt und zwar aus dem grund, dass ich in nem buch gelesen hab, dass die nicht jeder compiler kennt.
-
#include <string>
#include <iostream>
using namespace std;int main()
{string eingabe;
eingabe = cin.getline;
cout << eingabe;
return 0;
}da kommt dann aber folgende fehlermeldung:
Error E2285 MString.cpp 10: Could not find a match for 'string::operator =(void)
' in function main()
*** 1 errors in Compile ***
-
So ist es richtig:
#include <iostream> #include <string> using namespace std; int main() { string eingabe; cin >> eingabe; // Cin zum einlesen cout << eingabe << endl; // Cout zum ausgeben. return 0; }
PS: endl bedeutet end of line == \n
Achte auf die Stream Operatoren >> und << !!
mfg CSS
-
Aber bei cin>>x wird nur ein wort gelesen, bei cin.getline()>>x //richtig? die ganze Zeile
-
mit
cin >> x;
wird eingelesen bis <Return> gedrückt wird. Denn die Leerstelle ist auch ein "normales" zeichen ( 32 im ascci wert, glaube ich ).
-
*** schrieb:
danke für die antworten.
ich hab strings noch nicht gelernt und zwar aus dem grund, dass ich in nem buch gelesen hab, dass die nicht jeder compiler kennt.Schmeiss das Buch weg. Ein Buch, das mit char[] oder char * anstatt std::string für Anfänger arbeitet, ist wertlos. Genauso sollte immer std::vector anstatt eines Arrays verwendet werden.
-
*** schrieb:
[...]
eingabe = cin.getline;
[...]da kommt dann aber folgende fehlermeldung:
Error E2285 MString.cpp 10: Could not find a match for 'string::operator =(void)
' in function main()
*** 1 errors in Compile ***Das liegt daran, dass getline eine Funktion ist, und die musst du aufrufen
getline**()**.
*** schrieb:
ich hab strings noch nicht gelernt und zwar aus dem grund, dass ich in nem buch gelesen hab, dass die nicht jeder compiler kennt
Mein Tipp
besorg dir ein besseres Buch. Natürlich kennt kein Compiler std::string, da dieser zur STL gehört. Und das ist eine Bibliothek, die zum Standard gehört. Aber darüber brauchst dir keine Sorgen machen, entweder liegt die STL dem Compiler bei oder du besorgst dir 'ne frei verfügbare Implementation (zB STLPort).
-
des buch is echt scheise, nichtmal string drin. naja war eh billig.
hab jetzt mal volkards-c++ kurs runtergeladen, der is echt super find ich.
vielen dank für die ganzen schnellen antworten. super forum hier