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

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

21.03.2011, 22:08

Aus Datei lesen

Hallo Leute,

ich habe mal wieder ein Problem und komme nicht weiter.

Also folgendes ich sitze momentan an einem Periodensystem,
und will, dass alle Angaben eines Elements(Ordunungszahl,Masse,usw.)
aus der jeweiligen Datei geladen werden. Dazu habe ich mir erstmal eine Datei angelegt,
H.element. Darin stehen alle Informationen über Wasserstoff.
Grundaufbau der Datei ist folgender:

Quellcode

1
2
3
4
5
Wasserstoff
H
1
usw.
...


Mein Problem ist, dass ich nicht verstehe wie ich die einzelnen Wörter herauslade und einfüge.
Weil im string sieht das ja folgendermaßen aus:

C-/C++-Quelltext

1
Wasserstoff\nH\n1\nusw.\n...\n


Nun muss ich ja ihrgendwie einzeln bis zum \n lesen und die Segmente zuweisen.
Wie mach ich das???

Wäre dankbar über hilfe.

Gruß Moritz

2

21.03.2011, 22:29

nja anfängerfreundlich:

C-/C++-Quelltext

1
2
3
4
5
6
7
#include <string>
#include <fstream>

std::ifstream file_stream("h.desc");
std::string line;
while (std::getline(file_stream, line))
    // use the read line ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

3

21.03.2011, 22:33

Hab jetzt lange im Inet gesucht un es nun auch ein bissle anderst gemacht.
Wollte jetzt nochmal wissen ob das so ok ist oder ob ich es lieber anderst
machen sollte.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
void Element::Laden(std::string path)
{
    ifstream data(path);
    getline(data,path);
    cout<<"Elementname:" << path << endl;


 
    

}


So geh ich das jetzt einfach zeile für Zeile durch.

SilentDragon

Alter Hase

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

4

21.03.2011, 22:57

Hi moriz,

ich dachte bei dir liegen alle Elemente im Selben order? (würde ich empfehlen) dan müsste das doch eigentlich so aussehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
void Element::Laden(string number)
{
name = "Elementordner/" + number + ".element"; fstream fin(name);string all[400];string buffer;
    int i=0;
    while (fin.good()) 
    {
        getline(fin,buffer);
    all[i]= buffer;
        i++;
    }


habs nicht durch den compiler laufen lassen aber ich glaube das sollte funktionieren wenn du halt den Elementordner angibts und die Dateiendung ^^
in all[] befinden sich nun alle Zeilen, wie man sieht :) (Zeile 1 in all[0] etc.)

lg
SD
...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

21.03.2011, 23:01

@SilentDragon: dann viel spass mit dem überlauf :D
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

22.03.2011, 10:53

Ich mach dir den Vorschlag alles in eine Datei zu packen. Dafür könntest du auf Xml als Format zurück greifen. So hättest du alles schön in einer Datei Strukturiert und nur eine Laderoutine. Intern würd ich mir einfach eine Klasse Element anlegen. Diese bekommt dann die einzelnen Werte sowie Name des Elements Ordnungszahl etc. Beim laden erzeugst du dir dann das passende Objekt und hängst sie alle in eine Liste. Oder in eine Map je nach Anwendungsfall. Weiß jetzt nur nicht genau was du noch alles damit vor hast. von daher nur ein Vorschlag.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

7

22.03.2011, 22:08

Also ich bleib erstma lieber bei meiner Methode.
Hab einfach alle Elemente in ein Ordner gepackt.
Funktioniert einwandfrei :P
Also warum was ändern ^^

Werbeanzeige