mile04
08-02-2005, 20:48
hallo
ich braüchte Ihre Hilfe dringend!
ich habe ein programm mit C++ geschrieben,das die folgende textdatei einliest und ausgibt.
Dateiname : Tabelle 1.1
Datum : 07.02.05
korrektur : ja
spannung
mess1 mess2 mess3 mess3
23 2 59 1
56 63 7 1
53 63 10 1
#include <fstream.h>
#include <iostream> // wegen cout/cin
#include <string.h> // wegen strcmp
#include <vector>
#include <cstddef> // wegen size_t
//using namespace std;
int lesen(); // Funktionsprototyp
int main()
{
lesen();
return 0;
}
//------------- lesen-Funktion ------------------------------------------------
int lesen()
{
char line[201], file[50];
ifstream inputstrom; // der argumentlose Konstruktor "fstream" erzeugt das Objekt"dat"
std::vector<std::vector<int> > matrix;
size_t vectorSize = 4;
size_t zeile=0;
int spalte=0;
//------------- Datei öffnen ------------------------
do
{ inputstrom.clear();
cout<<"Dateiname inklusive Pfad eingeben: ";
cin>>file;
inputstrom.open(file,ios::in|ios::nocreate); // die Methode"open" wird mit 2 Argumente aufgerufen
// (Dateiname,Dateimodus)
if(inputstrom.fail()) // Fehlertest durchführen
cout<<"Datei existiert nicht!"<<endl;
}while(inputstrom.fail());
//-------------- Datei lesen ----------------------------
do
{
inputstrom.getline(line,6);
if(!strcmp(line,"mess1"))
{
std::cout<<"\n"<<line<<"\n";
inputstrom.getline(line,50);
for(zeile = 0;inputstrom; ++zeile) // wenn input-Strom"inputstrom" true wird die Schleife durchgefürt
{
matrix.resize(zeile + 1); // Speicher für vector in matrix reservieren
// Speicher für den inneren vector reservieren
matrix[zeile].resize(4); // 4 Steht für die Anzahl der Elemente (Spalten)pro Zeile
// innere vector lesen
for(spalte= 0; (spalte < vectorSize) && inputstrom; ++spalte) //Das "inputstrom" soll verhindern, dass die innere Schleife
// über das Ende der Datei hinausliest
{
inputstrom>> matrix[zeile][spalte];
std::cout <<matrix[zeile][spalte]<< ' ';
}
std::cout << "\r\n";
}
// std::cout <<matrix[zeile][spalte];
}
inputstrom.clear();
inputstrom.getline(line,50);
}while(!inputstrom.eof());
inputstrom.close(); // "dat" wird wieder freigemacht (und Datei geschlossen).
cout<<"\n\n"<<endl;
return 0;
}
aber was ich nicht verstehe, dass das prog bei der Ausgabe noch eine Null ganz am Ende mit ausgibt!! ???
23 2 59 1
56 63 7 1
53 63 10 1
0 :confused:
Noch dazu möchte die Matrix am Ende complett mit:
std::cout <<matrix[zeile][spalte];
ausgeben das geht auch nicht!!
Hilfe!!!
danke schön
ich braüchte Ihre Hilfe dringend!
ich habe ein programm mit C++ geschrieben,das die folgende textdatei einliest und ausgibt.
Dateiname : Tabelle 1.1
Datum : 07.02.05
korrektur : ja
spannung
mess1 mess2 mess3 mess3
23 2 59 1
56 63 7 1
53 63 10 1
#include <fstream.h>
#include <iostream> // wegen cout/cin
#include <string.h> // wegen strcmp
#include <vector>
#include <cstddef> // wegen size_t
//using namespace std;
int lesen(); // Funktionsprototyp
int main()
{
lesen();
return 0;
}
//------------- lesen-Funktion ------------------------------------------------
int lesen()
{
char line[201], file[50];
ifstream inputstrom; // der argumentlose Konstruktor "fstream" erzeugt das Objekt"dat"
std::vector<std::vector<int> > matrix;
size_t vectorSize = 4;
size_t zeile=0;
int spalte=0;
//------------- Datei öffnen ------------------------
do
{ inputstrom.clear();
cout<<"Dateiname inklusive Pfad eingeben: ";
cin>>file;
inputstrom.open(file,ios::in|ios::nocreate); // die Methode"open" wird mit 2 Argumente aufgerufen
// (Dateiname,Dateimodus)
if(inputstrom.fail()) // Fehlertest durchführen
cout<<"Datei existiert nicht!"<<endl;
}while(inputstrom.fail());
//-------------- Datei lesen ----------------------------
do
{
inputstrom.getline(line,6);
if(!strcmp(line,"mess1"))
{
std::cout<<"\n"<<line<<"\n";
inputstrom.getline(line,50);
for(zeile = 0;inputstrom; ++zeile) // wenn input-Strom"inputstrom" true wird die Schleife durchgefürt
{
matrix.resize(zeile + 1); // Speicher für vector in matrix reservieren
// Speicher für den inneren vector reservieren
matrix[zeile].resize(4); // 4 Steht für die Anzahl der Elemente (Spalten)pro Zeile
// innere vector lesen
for(spalte= 0; (spalte < vectorSize) && inputstrom; ++spalte) //Das "inputstrom" soll verhindern, dass die innere Schleife
// über das Ende der Datei hinausliest
{
inputstrom>> matrix[zeile][spalte];
std::cout <<matrix[zeile][spalte]<< ' ';
}
std::cout << "\r\n";
}
// std::cout <<matrix[zeile][spalte];
}
inputstrom.clear();
inputstrom.getline(line,50);
}while(!inputstrom.eof());
inputstrom.close(); // "dat" wird wieder freigemacht (und Datei geschlossen).
cout<<"\n\n"<<endl;
return 0;
}
aber was ich nicht verstehe, dass das prog bei der Ausgabe noch eine Null ganz am Ende mit ausgibt!! ???
23 2 59 1
56 63 7 1
53 63 10 1
0 :confused:
Noch dazu möchte die Matrix am Ende complett mit:
std::cout <<matrix[zeile][spalte];
ausgeben das geht auch nicht!!
Hilfe!!!
danke schön