Hallo,
ich möchte aus einer Datei einen Wert für die int Variable arrayheight auslesen. Danach soll damit ein zweidimensionales Array erzeugt werden. Danach soll das Array mit Werten gefüttert werden die zwei Zeilen unter arrayheight stehen.
Die eingabedatei sieht wie folgt aus:
Der compiler spuckt einige folgender Fehlermeldungen aus:
Kann es sein, dass die datentypen nicht übereinstimmen? im stream stehen ja eigentlich string oder char. Ich habe aber oGrenze, usw. als int definiert. Wenn ich sie jedoch als char definiere kommen ähnliche fehler...
Wo liegt mein Fehler?
Der Code:
Danke für eure Hilfe.
Guddy
ich möchte aus einer Datei einen Wert für die int Variable arrayheight auslesen. Danach soll damit ein zweidimensionales Array erzeugt werden. Danach soll das Array mit Werten gefüttert werden die zwei Zeilen unter arrayheight stehen.
Die eingabedatei sieht wie folgt aus:
Code:
arrayheight: 4
Variable_nr;lower_bound;upper_bound
1;80;100
2;50;55
3;5;44
4;45;66
Der compiler spuckt einige folgender Fehlermeldungen aus:
Code:
C:29: error: no match for 'operator>>' in 'file.std::basic_ifstream<char, std::char_traits<char> >::<anonymous>.std::basic_istream<_CharT, _Traits>::operator>> [with _CharT = char, _Traits = std::char_traits<char>](((int&)(& varNr))) >> separator'
Kann es sein, dass die datentypen nicht übereinstimmen? im stream stehen ja eigentlich string oder char. Ich habe aber oGrenze, usw. als int definiert. Wenn ich sie jedoch als char definiere kommen ähnliche fehler...
Wo liegt mein Fehler?
Der Code:
C++:
#include <iostream>
#include <fstream>
int main()
{
std::ifstream file("Variableninput.dat");
if( !file.is_open() )
{
std::cerr << "Fehler beim Oeffnen" << std::endl;
return -1;
}
file.ignore( std::numeric_limits< std::streamsize >::max(), ':' );
size_t arrayHeigth;
file >> arrayHeigth;
std::string comment;
file >> comment; //geht hier so einfach, da Var_nr;uGrenze;oGrenze ein Wort ist, ansonsten: file.ignore( std::numeric_limits< std::streamsize >::max(), '\n' ) )
int varNr, uGrenze, oGrenze, arrayWidth;
const char* separator = ";";
int varArray[arrayHeigth] [arrayWidth];
arrayWidth = 3;
for (unsigned int i = 1; i <= arrayHeigth; i++)
{
file >> varNr >> separator >> uGrenze >> separator >> oGrenze >> "\n";
varArray [i] [1] = varNr; varArray [i] [2] = uGrenze; varArray [i] [3] = oGrenze;
std :: cout << varArray [i] [1] << "\t" << varArray [i] [2] << "\t" << varArray [i] [3]<< "\n";
}
}
Danke für eure Hilfe.
Guddy