Datei einlesen -> gehts auch einfacher?
-
Hallo ich wollte mal fragen, obs meine Möglichkeit eine Datei einzulesen auch in "einfach" gibt

Das Programm soll Daten aus folgender Struktur zuordnen:Name;PIN#Kontostanddata_in.open("data.db"); if(!data_in.is_open()) { std::cout << "Datei konnte nicht geoeffnet werden!"; std::cin.get(); exit(0); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // =[Einlese-Schleife]= //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 1. Information -> Name |#| 2. Information -> PIN |#| 3. Information -> Kontostand //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for(int i = 0; i < number_user; i++) { while(data_in.get(read_letter)) { if(read_letter == ';') { while(data_in.get(read_letter)) { if(read_letter == '#') { while(data_in.get(read_letter)) { if(read_letter == '\n') { break; } money_buffer += read_letter; } break; } pin_buffer += read_letter; } break; } name_buffer += read_letter; } money_buffer_ld = convert_str< long double >(money_buffer); user_names.push_back(name_buffer); user_pins.push_back(pin_buffer); user_money.push_back(money_buffer_ld); name_buffer.clear(); pin_buffer.clear(); money_buffer.clear(); } data_in.close();
-
Ja, das heißt
std::getline.
Undexitist Mist, wenn man nicht aufräumt.
-
Ginge natürlich noch besser mit Boost ;p
-
Feuerkelch schrieb:
Hallo ich wollte mal fragen, obs meine Möglichkeit eine Datei einzulesen auch in "einfach" gibt

Ja es gibt eine Möglichkeit.
Liegt folgende Datei vor:Feuerkelch;A1234#34.50 Benno;5634B#-134.70 Susi;CB6CB7#3338.20dann liefert dieser Code:
#include <iostream> #include <fstream> #include <string> #include <vector> struct UserInfo { std::string m_name; std::string m_pin; double m_kontostand; friend std::istream& operator>>( std::istream& in, UserInfo& ui ); }; std::istream& operator>>( std::istream& in, UserInfo& ui ) { getline( in >> std::ws, ui.m_name, ';' ); getline( in, ui.m_pin, '#' ); in >> ui.m_kontostand; return in; } int main() { using namespace std; vector< UserInfo > user_infos; // ifstream data_in("data.db"); ifstream data_in("datei.txt"); if( !data_in.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -1; } for( UserInfo x; data_in >> x; ) user_infos.push_back( x ); cout << user_infos.size() << " Eintraege gelesen" << endl; if( data_in.eof() ) cout << "Dateiende erreicht" << endl; cin.get(); return 0; }diese Ausgabe
3 Eintraege gelesen Dateiende erreicht:xmas2: Werner
-
Feuerkelch schrieb:
money_buffer_ld = convert_str< long double >(money_buffer);Geld als double?!?