Wollte eine csv-Datei einlesen (importieren) nach der Methode "Zeichen einzeln lesen.
Nun wird aber offenbar das Zeilenende ignoriert.
Gibt es einen Mode, bei dem binär einliest?
void datei_les_csv_test()
{
cout << "----------- Hier ist datei_les_csv_test()" << endl << endl;
//ifstream textDatei("datei.csv");
ifstream textDatei("datei.csv", ios::in);
str = "";
zeichen=' ';
while (! textDatei.eof())
{
textDatei >> zeichen;
printf("%c %d|", zeichen, zeichen);
if (zeichen == 10) cout << "Zeilenende erkannt" << endl;
///if (zeichen == ';' || zeichen == 10) //!!!!!!!!! DAS HIER GEHT OFFENBAR NICHT
if (zeichen == ';')
{
cout << endl << "str=" << str << endl << endl;;
str="";
}
else
str += zeichen;
} //if (zeichen == ';')
}
------------------------------------------------------------------------------------------------------------------------
Testdatei (die am Ende der Zeile natürlich keinen Strichpunkt hat):
AA;BB;CC
DD;EE;FF
C++ (kein QT), Zeilenende wird beim Einlesen ignoriert
Re: C++ (kein QT), Zeilenende wird beim Einlesen ignoriert
glaub der streamoperator für text (<< >> ) manipuliert/filtert das whitespace/endl zeugs.textDatei >> zeichen;
Das verhalten kann man aber auch unterdruecken ... dann liest er ein was er kann ^^
mit getline kannst schon mal auf endl's reagieren, musst nur noch nach ";" separieren.
Aber für performance und flexibilitaet würd ich mich ned auf die stl streams verlassen.
Für solche "low level" zugriffe solltest dann "binaer" lesen (istream::read) und die daten selber interpretieren oder interpretieren lassen (spazialisierter tokenizer)...
Ciao ...