C++ Anfängerproblem : Datei schreiben.

iJerkface

Lieutenant
Registriert
März 2012
Beiträge
665
Moin , wollte ein Programm schreiben bei dem man zwischen dem Lesen und dem Schreiben einer Datei wechseln kann.
Nun wollte ich entsprechend die beiden Funktionen in eine "if-Funktion" einbauen.

Code:
int main(int argc, char *argv[])
{
    int zahl ;
    string eingabe;
   cout << " 1: Datei schreiben. \n 2: Datei lesen." << endl;
   cin >> zahl;
   if (zahl == '1')
   {
            cout << " Text eingeben : " << endl;
            cin  >> eingabe ;
            
            fstream datei;
            datei.open("datei.dat", ios:out);
            datei << eingabe << endl;
            cout << "Datei gespeichert." << endl;
            }
            
    system("PAUSE");
    return EXIT_SUCCESS;
}

In datei.open("datei.dat" , ios:out);
meint der Bloodshed 4.9.9.2 dann : expected primary-expression before ':' token.

Woran liegt das? :D
Ergänzung ()

Selbst gefunden , mussten 2 Doppelpunkte zwischen ios und out. :D
damn!
Ergänzung ()

Jetzt gebe ich zum "Schreiben-Modus" die 1 ein , und er überspringt quasi den Code in der if Funktion.

Warum?
 
Lass dir doch mal nach der Eingabe der Zahl diese wieder ausgeben, dann kannst du dich ja rantasten wo der Fehler liegt - oder den Debugger anwerfen :)
 
Probier mal "ios::out".
Also mit zwei Doppelpunkten.

Oh, schon gefunden wie ich sehe. ;-)

Zu deinem anderen Problem:
Lass bei der If-Anweisung das Hochkomma weg.
Also so:
if (zahl == 1)
 
Zuletzt bearbeitet:
Ändere

PHP:
if( zahl == '1' )

nach

PHP:
if( zahl == 1 )

ab.

Du fragst ja nicht nach einem Zeichen sondern nach einer Zahl, denn deine Variable zahl ist vom Typ Int.
'1' in Int ist die ASCII Codierung von 1, also eine ganz andere Zahl.
 
du list eine int ein, vergleichst aber mit dem Charaktercode '1' (der ist irgendwas von Dezimal 40, müsste selber eine ASCII Tabelle rausfischen)

einfach beim if die anführungzeichen von '1' wegnehmen, ODER auf ein char einlesen.. (also aus zahl ein char machen)
 
Danke @ DaysShadow , das wars :D
Also muss ich die Bedingung nur in ' setzen wenn ein string eingegeben wird?
Ergänzung ()

Nächstes Problem : Ich gebe einen Satz ein , gespeichert wird aber nur EIN Wort.
Das erste nämlich.
 
Das Hochkomma verwendet man nur bei Chars und dann auch nur bei einzelnen Buchstaben, also 'A' oder 'g'.

Strings werden in Anführungszeichen angegeben und zum Lesen derer nutzt man unter anderem cin.getline( )

Kannst du aber alles im Internet finden, http://www.cplusplus.com/ ist eine sehr gute Anlaufstelle für kleinere Problemchen, wenn man eine Funktion nicht weiß usw.

Gibt dort auch Tutorials.
 
Weisst du nicht auch , warum nur das erste Wort gespeichert wird?
Ergänzung ()

String mit getline als Satz speichern *kopfgegenwandhau*
Ergänzung ()

cout << "Text eingeben : " << endl;
getline(cin,eingabe);

ofstream datei;
datei.open("datei.txt");
datei << eingabe << endl;
cout << "Datei gespeichert." << endl;

Er springt von : text eingeben auf "Datei gespeichert" ohne die Eingabe abzufragen.

Warum?
 
Also das funktioniert:

PHP:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

 int main()
 {
     string text;
     cout << "Text eingeben : ";
     getline( cin, text );

     ofstream datei;
     
     datei.open("datei.txt");
     datei << text << endl;
     cout << "Datei gespeichert." << endl;
     
     datei.close();
}

Keine Ahnung warum er bei dir also die Eingabe überspringen sollte.

Übrigens gibt es einen EDIT bzw. Bearbeiten Button, brauchst nicht immer auf Antworten klicken wenn du etwas hinzufügen möchtest.
 
Zuletzt bearbeitet:
Zurück
Oben