Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datei Einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.06.2010, 15:16 Uhr
easye



Hallo, ich habe ein Problem damit eine Datei einzulesen, kann mir da jemand helfen?
Danke Leute!

Der code:

C++:
#include<iostream>
#include<fstream>
#include<string>
#include<map>
using namespace std;

int main( int argc, char **argv){
map<string, int> cars;
ifstream fp(argv[1]);
string line;

if (!fp)
return 1;

getline (fp, line);
while (!fp.eof()){
        int pos = line.find(":");
        string car = line.substr(0, pos);
        cars[car] += atoi ((line.substr(pos+1).c_str()));
        getline (fp,line);
}

for (map<string,int>::iterator i=cars.begin(); i!=cars.end(); i++){
        cout <<i->first<<":"<<i->second<<endl;
}

return 0;
}



und die datei die eingelsen werden soll cars.txt

opel:17
ford:19
opel:16
bmw:14
ford:19
ford:5

Dieser Post wurde am 15.06.2010 um 15:42 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.06.2010, 15:46 Uhr
ao

(Operator)


... und dein Problem ist ...?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.06.2010, 16:16 Uhr
easye



Danke für den schnellen Kommentar, das Programm ist aus einer Probeklausur, mit dem Programm soll eine Datei ausgelsen werden mit dem Inhalt

opel:17
ford:19
opel:16
bmw:14
ford:19
ford:5

diese dann mit dem Programm laut meiner Auffassung nach ":" die Zahl dann aufsteigend sortieren.... nun bekomm ich es nicht gelaufen den ganzen Programm ..
Fehlermeldung Debug Assertion Faild!
File: fopen.c
line:54
Expression : file!=NULL

ich verstehs nicht..
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.06.2010, 16:22 Uhr
ao

(Operator)


Sicher, dass die Datei existiert? An der Stelle, wo das Programm sie sucht? Hast du schon mal deinen Debugger bemüht? Was sagt der?

Außerdem, ich bin zwar kein Fachmann für STL-Container, aber ich hab den Verdacht, dass man zwischen diesen beiden Zeilen

C++:
        string car = line.substr(0, pos);
        cars[car] += atoi ((line.substr(pos+1).c_str()));


noch irgendwas machen muss, z.B.

C++:
        cars.insert (car);


Kann das sein?

Dieser Post wurde am 15.06.2010 um 16:22 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.06.2010, 16:37 Uhr
easye



ja ist im projektordner... mit cars.insert (car); auch versucht klappt nicht ....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.06.2010, 17:11 Uhr
0xdeadbeef
Gott
(Operator)


Du musst den Dateinamen als ersten Parameter beim Aufruf des Programms angeben. Wenn du relative Pfade benutzen willst, sind diese relativ zum Arbeitsverzeichnis, also da, wo du bist, nicht da, wo das Programm liegt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.06.2010, 02:22 Uhr
easye



Jo danke an alle ist schon erledigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: