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


Log in to reply