Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » von datei in multimap

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
28.06.2007, 21:34 Uhr
helli



Hi,

kennt sich jemand mit datei einlesen und multimaps aus ?


Ich möchte aus einer txt datei namens noten.txt matrikel nr und noten einlesen, in die multimap schreiben und dann auf der console ausgeben. Das steht in der Datei: genauso:

6543225 1,1
6762447 4,2
6232234 3,5
7642246 2,1


ich habe 2 fkt geschrieben.

C++:
typedef multimap< int, double > TestMap;
typedef TestMap::value_type Wertepaar;


bei der klassendeklaration bei public:
TestMap test;



void Menu::datenEinlesen()
{
    ifstream inTextFile( "noten.txt" );
    if( !inTextFile )
    {
        cerr << "Datei konnte nicht geoeffnet werden." << endl;
        exit( 1 );
    }

    while(!inTextFile.eof())
    {
    inTextFile>>matrikelnr;
    inTextFile>>note;
    test.insert(pair<int,double>(matrikelnr,note));
    }
    inTextFile.close();
}
void Menu::datenAusgeben()
{
    cout << "Ausgabe:\n";
    TestMap::iterator iter = test.begin();
    for( multimap<int, double>::iterator iter = test.begin(); iter != test.end(); ++iter ) {
        cout << " Matrikel Nr: " << iter->first << ", Note:" << iter->second << endl;
}
}




Bearbeitung:
C++ Tags

Dieser Post wurde am 28.06.2007 um 21:42 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.06.2007, 22:23 Uhr
sten




C++:
// Noten.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;

#include <map>
#include <algorithm>
#include <iterator>
#include <fstream>
using std::ifstream;
using std::ostream;
using std::ios;
#include <string>
using std::getline;
typedef std::multimap<int, double, std::less<int>>Multimap;

int _tmain(int argc, _TCHAR* argv[])
{
    Multimap pairs;

    ifstream infile("Noten.txt", ios::in);
     if(!infile)
        {
            cerr<<"File could not be opened\n"<<endl;
            exit(1);
        }
double note;
int matrikelnummer;
    
while(infile>>matrikelnummer>>note)
     {
         pairs.insert(Multimap::value_type(matrikelnummer,note));
    }
    
for (Multimap::const_iterator iter=pairs.begin(); iter!=pairs.end(); ++iter)
    cout<<iter->first<<"\t"<<iter->second<<"\n";

cout<<endl;

    return 0;
}



allerdings müssen in deiner txtdatei die noten mit "."(punkt) geschrieben werden sonst erkennt der compiler die note nicht als double. kannst allerdings falls die datei wirklich mit komma geschrieben ist. mit string einlesen und dann eben manipulieren.
finde sowieso immer besser als string einzulesen ;)

gruss sten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.06.2007, 22:53 Uhr
helli



also erstmal vielen dank !! das hat einiges rumprobieren abgenommen

noch eine frage ich habe das jetzt alles in meine klasse gepackt was auch funktioniert nur krieg e ich probleme wenn ich z.b. "infile" von dir in einer anderen methode benutzen will

kann ich jetzt einfach
bei der klassen deklaration :

class xyz()
{
public:
ifstream infile("Noten.txt", ios::in);
}

das so in der art hinzufügen ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.06.2007, 00:46 Uhr
sten



nicht ganz also wenn du das nutzen möchtest in deinen methoden
in der header müsstest du das dann global schreiben vor der klasse
naja kann man iss aber nich so das ware. besser wäre eine methode read..

ifstream infile("Noten.txt", ios::in);
class xyz()
{
...
}

alternativ
sowas in der art: als methode

istream &read(istream&)
{
ifstream infile("Noten.txt", ios::in);
if(!infile)
{
cerr<<"File could not be opened\n"<<endl;
exit(1);
}
return infile;
}
 
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: