Eingabe über cin in string-Klasse
-
Hallo,
habe folgendes Anfängerproblem: ich mmöchte über cin Daten von der Tastatur abfragen und in ein Objekt der String-Klasse einlesen.string text; cin >> text;
Wie kann ich das am einfachsten bewerkstelligen ?
-
#include <iostream> #include <string> using namespace std; int main(){ string test; cin>>test; cout<<test<<endl; }
-
Bin auch Anfänger und frag mich gerade was der Unterschied zwischen char text[20] und string text ist ?
-
char text[20] ist ein Array, das aus der Sprache C stammt. Der Aufbau ist so gestaltet, dass die Zeichen sequentiell angeordnet sind. Das Ende eines C-Strings wird durch die binäre 0, also '\0' gekennzeichnet. Der Name des Arrays "text" dient als Pointer auf die Adresse des Arrays. Dort steht das erste Element des Arrays. text ist also das Gleiche wie &text[0]. Der Speicherbereich ist auf dem Stack oder im globalen Speicher (je nach Definition).
Ein String der C++-Bibliothek <string> (gehört in gewisser Weise zur STL) arbeitet intern mit dynamischem Speicher auf dem freestore (vgl. new/delete) und funktioniert objektorientiert.
-
Hallo für die Hilfe. Mein Fehler lag daran, daß ich die Datei <iostream.h> eingebunden habe und nicht <iostream>.
Nun zu meinem nächsten Problem. Ich möchte den eingelesenen mittles fputc() in eine Datei schreiben. Dafür brauche ich ja den Pointer auf die Characters im String um diese auslesen zu können. Ich habe vor, die Länge zu ermitteln mittels der Methode length() und mittles deren die Daten in ein Char-Array zu lesen, welches ich dann an fputc() übergebe.
Gibt es keine Methode der Klasse string, die mir diesen Pointer liefern kann ? Zumindest konnte ich keinen finden.
-
Sauerkrauth schrieb:
Hallo für die Hilfe. Mein Fehler lag daran, daß ich die Datei <iostream.h> eingebunden habe und nicht <iostream>.
Nun zu meinem nächsten Problem. Ich möchte den eingelesenen mittles fputc() in eine Datei schreiben. Dafür brauche ich ja den Pointer auf die Characters im String um diese auslesen zu können. Ich habe vor, die Länge zu ermitteln mittels der Methode length() und mittles deren die Daten in ein Char-Array zu lesen, welches ich dann an fputc() übergebe.
Gibt es keine Methode der Klasse string, die mir diesen Pointer liefern kann ? Zumindest konnte ich keinen finden.test.c_str();
-
Wie lese ich bei "string test" einen Satz in "test" ein ? Bei cin wird ja nur das erste Wort eingelesen und bei cin.get brauch man ja noch die größe des Strings. Gibts da noch ne andere Methide ?
-
#include <iostream> #include <string> using namespace std; int main () { string line; getline(cin,line); cout << "Ihre Eingabe:\n" << line << endl; return 0; }
MfG SideWinder
-
Muß leider schon wieder nerven, denn irgendwas mache ich immer noch falsch.
#include <iostream> #include <string> #include <conio.h> using namespace std; int main(void) { string text; char* charPtr; cin >> text; charPtr = text.c_str(); return 0; }
Bekomme folgende Fehlermeldung:
error C2440: '=' : 'const char *' kann nicht in 'char *' konvertiert werden
-
const char* charPtr = text.c_str();
Muss konstant sein, sonst könntest du ja im String rumpfuschen der der Klasse gehört
MfG SideWinder
-
Sauerkrauth schrieb:
[...] Ich möchte den eingelesenen mittles fputc() in eine Datei schreiben. [...]
Nein, das möchtest du nicht, aber du möchtest die C++-Streams dafür verwenden.
#include <fstream> #include <iostream> #include <string> using namespace std; int main () { string Dateinamen; cout << "Bitte einen Dateinamen eingeben " << endl; cin >> Dateinamen; //Datei erstellen ofstream file (Dateinamen.c_str ()); if (!file) { cerr << "Fehler beim erstellen der Datei!" << endl; return 1; } //In Datei schreiben file << "Hallo Welt\n" << endl; //Datei schließen file.close (); //Datei zum lesen öffnen ifstream in (Dateinamen.c_str ()); if (!in) { cerr << "Fehler beim öffnen der Datei!" << endl; return 1; } string input; //Eine zeile aus der Datei lesen getline (in, input); //Die Zeile ausgeben cout << input; //Damit das Fenster nicht gleich schließt cin.ignore (); cin.get (); }
-
Also dieses Forum ist in Bezug auf Hilfsbereitschaft und Schnelligkeit der Antworten absolut spitze.
Vielen Dank