Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

20.09.2009, 21:27

so, geöffnet wird die Datei jetzt.
ich ab sie test.txt genant und das wurd auch angezeigt, aber in wirkichkeit hat das system sie test.txt.txt genannt.

So jetzt muss ich nur noch wissen wie ich den Dateinahmen einlesen kann und wie man char[20] zu int castet. :)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

20.09.2009, 21:33

Den Dateinamen bekommst du per std::cin:

C-/C++-Quelltext

1
2
3
4
5
std::string filename;
std::cout << "Dateiname: ";
std::getline( std::cin, filename );

// ...


Wenn die Zahlen getrennt in der Datei stehen kannst du sie per Stream-Operatoren einlesen.

13

20.09.2009, 21:57

die Dateien, die mein programm auswerten soll, haben 26 zeilen, in jeder zeile Steht eine mehrstelliege Zahl außerdem habe ich einen arry mit 26 int elementen in denen die Zahlen gespeichert werden sollen.

nachdem was David geschrieben hat hab ich das hier gebastelt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string a_cDateiName;
    char a_cBuffer[20];
    cout <<"Geben sie den Dateinamen ein:\n";
    cin >> a_cDateiName;

    ifstream CDatei;
    CDatei.open( a_cDateiName);
    if( !CDatei.is_open())
    {
        cout <<"Fehler beim öffnen der Datei! \n";
        system("PAUSE");
        return;
    }
    int i = 0;
    while( CDatei.getline( a_cBuffer, 20))
    {
        iHaeufigkeiten[i] = (int) (a_cBuffer);        
    }
    CDatei.close();


Das funktioniert aber vorne und hinten nicht. ich bekomme schon beim compiliren fehler wegen der open funktion, das die const char * braucht.
und wenn ich den dateinamen wieder vorgebe und mir die Elemente von iHaeufigkeiten ausgeben lasse, hab ich 0.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

20.09.2009, 22:17

Du hast ja auch nichts von dem was ich geschrieben hab' umgesetzt.

15

24.09.2009, 15:42

könnte mir vieleicht einer von euch ein Beispiel machen?
ich ich blick da iwi nicht durch :(

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

16

24.09.2009, 16:39

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    std::vector<int> numbers;
    std::ifstream stream( "test.txt" );

    if ( stream )
    {
        int num;
        while ( stream >> num ) {
            numbers.push_back( num );
        }

        assert( stream.eof() );
    }
    else
        std::cout << "error: cannot open file" << std::endl;
}


Oder:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    std::vector<int> numbers;
    std::ifstream stream( "test.txt" );

    if ( stream ) {
        std::copy( std::istream_iterator<int>( stream ), std::istream_iterator<int>(), 
            std::back_inserter( numbers ) );
    }
    else
        std::cout << "error: cannot open file" << std::endl;
}

17

24.09.2009, 18:16

Hi, also ich hab mir mal für ein Projekt 2 Funktionen zum schreiben / lesen geschrieben. Dabei musst du nur die Zeile und die Datei angeben, der rest passiert automatisch. Zurückgegeben wird der Inhalt der angegebeben Zeile. Beim schreiben musst du halt noch iData angeben, das was in der Zeile geschrieben werden soll.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
///////////////////////////////////////////////////////////////////////////////


// Datei schreiben Zahlen


void WriteFile(int iData, char sFilename[128], int iLine)
{  
    std::string sValue[1024];
    
    std::ifstream iofile;
    iofile.open(sFilename);

    // Alte Zeilen auslesen und in einem array speichern

    for (int i = 0; i < iLine; i++)
    {
        getline(iofile,sValue[iLine]);
    }
    iofile.close();

    ///////////////////////////////////////////////////////


    std::ofstream outfile;
    outfile.open (sFilename); 

    // Neue Zeile hinter den alten in der Datei setzen

    for (int i = 1; i < iLine; i++)
    {
        outfile << sValue[iLine] << "\n";
    }
    outfile << iPoints;
    outfile.close();
}

///////////////////////////////////////////////////////////////////////////////


// Datei lesen


std::string LoadFile(char sFilename[128], int iLine)
{
    std::string sValue;
    
    std::ifstream file;
    file.open(sFilename);
    
    // Bestimmte Zeile auslesen und zurückgeben

    for (int i = 0; i < iLine; i++)
    {
        sValue = "";
        getline(file,sValue);
    }

    file.close();
     
    return sValue;
}

///////////////////////////////////////////////////////////////////////////////

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

18

24.09.2009, 18:20

Und was bringt das jetzt ganz konkret? Nebenbei: Hast du in deinem Projekt eigentlich keine Fehlerbehandlung?

19

24.09.2009, 20:53

Zitat von »"David_pb"«

Und was bringt das jetzt ganz konkret? Nebenbei: Hast du in deinem Projekt eigentlich keine Fehlerbehandlung?


In meinem Post hab ich das mehr als ausführlich erklärt.

Na klar hab ich normalerweise ne Fehlerbehandlung drinn, aber ich denk bei einem Beispiel ist das ja nicht wirlich nötig. Wenn er will kann er das ja noch einbauen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

20

24.09.2009, 21:21

Zitat von »"raXor"«


In meinem Post hab ich das mehr als ausführlich erklärt.


Ich weiß schon was dein Code macht. Und deshalb frage ich mich, in wie weit das dem Poster helfen soll...

Zitat von »"raXor"«


Na klar hab ich normalerweise ne Fehlerbehandlung drinn, aber ich denk bei einem Beispiel ist das ja nicht wirlich nötig. Wenn er will kann er das ja noch einbauen.


Ich dachte das ist Copy & Paste Code aus deiner Anwendung?

Werbeanzeige