Lambo-Benni
Bekanntes Mitglied
Hallo PFler,
ich häng mal wieder an einem C++-Stück. Wäre nett, wenn sich jemand die Zeit nimmt und sich Folgendes mal ansieht:
(der gesamte Code steht ganz unten)
mein Problem:
der Compiler scheint ein "IF" immer als "true" zu verstehen.
"ch" ist eine Variable vom Typ "char". Der Inhalt von "ch" wird mit einer "for"-Schleife aus einer Datei ausgelesen (Zeichen für Zeichen). Wenn "ch" ein im Code genanntes Zeichen ist, soll der "IF"-Block ausgeführt werden. Bisher wird der "IF"-Block allerdings immer ausgeführt. (die '0' hatte ich auch schon mal rausgenommen, da evtl. ein Leerzeichen als '0' interpretiert werden könnte, was allerdings unlogisch wäre)
Hier der gesamte Code:
Schon im Vorraus vielen Dank für jede Hilfe!
edit: Der Compiler meldet keine Fehler oder Warnungen.
ich häng mal wieder an einem C++-Stück. Wäre nett, wenn sich jemand die Zeit nimmt und sich Folgendes mal ansieht:
(der gesamte Code steht ganz unten)
mein Problem:
der Compiler scheint ein "IF" immer als "true" zu verstehen.
Code:
if (ch == '0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
Hier der gesamte Code:
Code:
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream file;
file.open ("2509.kml", ifstream::in);
char ch;
int ko = 500;
string filter[ko*3];
long double koord[ko][3];
int anz = 0, z, su;
unsigned int i;
char suche[32000];
string ls;
for (i=0;i<32000;++i) // einlesen der gesamten Datei bis "LineString"
{
if (file.eof()) // Abbruch bei Dateiende
{
i = 32000;
}
ch = file.get();
suche[i] = ch;
if (suche[i] == 'g')
{
for (su=0;su<10;++su)
{
ls += suche[i-9+su];
cout << ls << endl;
}
if (ls == "LineString")
{
cin.get();
for (;i<32000;++i) // einlesen der gesamten Datei bis Anfang der Koordinaten
{
ch = file.get();
// suche[i] = ch;
if (ch == '0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
{
cin.get();
for (;i<32000;++i) // einlesen der Koordinaten
{
ch = file.get();
if (ch!=' ') // einlesen bis Leerzeichen
{
if (ch!=',') // einlesen bis Komma
{
filter[anz] += ch;
}
else
{
++anz;
}
}
else { ++anz; }
/* if (ch == '<')
{
i = 32000;
} */
}
}
}
}
else
{
ls = "";
}
}
}
for (z=0;z<=anz;++z) // Ausgabe der ausgelesenen Koordinaten
{
cout << filter[z] << endl;
}
cout << endl << endl << endl;
int y;
i = 0;
for (z=0;i<=anz;++z) // zuordnen der Koordinaten im Array
{
for (y=0;y<3;++y)
{
istringstream strtofl(filter[i]); // Umwandlung in Double
strtofl >> koord[z][y];
++i;
}
}
for (i=0;i<z;++i) // Ausgabe der sortierten Koordinaten
{
for (y=0;y<3;++y)
{
cout << setprecision(17) << koord[i][y] << endl;
}
cout << endl;
}
file.close();
}
Schon im Vorraus vielen Dank für jede Hilfe!
edit: Der Compiler meldet keine Fehler oder Warnungen.