8Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
456
456
EMPFEHLEN
-
Moin Leute,
ich bin neu hier. Ich geb mir größte Mühe, alles so zu beschreiben, dass es schnell klar wird und wenig Aufwand für euch ist. Falls doch mal was nicht so präzise ist, bitte nachfragen. Ich verwende Ecplise Wascana.
Für meinen HiWi-Job bin ich grade fleißig am Progammieren.
Ein Teilprogramm will aber noch nicht richtig.
In diesem möchte ich Daten aus einer .txt Datei einlesen.
Die Datei heißt wasser.txt und ist im selben Ordner wie das Programm.
Das funktioniert allerdings nicht. Hier der Quellcode:
#include<iostream>
#include<cmath>
#include<fstream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
[...]
string datei = "wasser.txt";
ifstream in( datei ); // Textdatei einlesen
if (in)
{
cout<<"Alles hat geklappt";
string zeile;
while( !in.eof())// solange Dateieende nicht erreicht
{
getline( in, zeile); // zeilenweise einlesen
cout<<zeile<<endl;
cout<<a<<endl;
a++;
}
}
else
{
cout <<"Leider ist beim Lesen der Datei thermdat.txt ein Fehler aufgetreten";
}
Mir wird immer "Leider..." ausgegeben.
Vielen Dank schon mal im Vorraus
Fuji
-
Hallo,
Versuch mal stattfolgendes:Code cpp:1
if (in)
Code cpp:1
if (in.good())
-
Danke für deine Antwort; funktioniert aber leider auch nicht
EDiT: War nen Versionenfehler. Sry
Hab nen kleinen Fehler oben in meinem Text gehabt und mach das ganze jetzt nochmal in cpp der Übersichthalber:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
/* * test.cpp * * Created on: 16.09.2011 * Author: Jules */ #include<iostream> #include<cmath> #include<fstream> #include<string> #include<sstream> using namespace std; int main() { //double NasaKoeff [7][10]; int a = 1; string datei = "thermdat.txt"; ifstream in( "datei" ); // Textdatei einlesen if (in.good()) { cout<<"alles klappt"; string zeile; while( !in.eof())// solange Dateieende nicht erreicht { getline( in, zeile); // zeilenweise einlesen cout<<zeile<<endl; cout<<a<<endl; a++; } } else { cout <<"Leider ist beim lesen der Datei thermdat.txt ein Fehler aufgetaucht"; } return 0; }
mfg
fujiGeändert von fujifilm (20.09.11 um 18:40 Uhr)
-
Hallo,
Es muss trotzdem if (in.good()) heißen. Nebenbei: Ich wusste garnicht das ifstream einen Konstruktor hat der einen String akzeptiert.
-
Moin,
hab die falsche Version reinkopiert. Sry. Habs jetzt nochmal überarbeitet.
Hm, hab ich in nem Tutorial gelesen.
Hast du eventuell eine andere Lösung, wie ich das einlesen könnte?
mfg
fuji
-
Hallo,
Habs grad selber versucht. Bei mir mit Visual Studio 2010 hats anfänglich auch nicht funktioniert, hab jetzt grad gesehen das aber Standartmäßig als Ausführ-Verzeichnis im Debug-Mode das Projektverzeichnis und nicht das Ausgabeverzeichnis gesetzt war.
Funktioniert dein Programm wenn dus direkt aus dem Ordner startest?
Edit: Mit dem Konstruktor hast du recht, den gibts wirklich. Naja, man lernt nie aus.
-
Besser if (in.is_open()).
Aber auch erst seit C++11.
Du versuchst hier die Datei namens datei zu öffnen. Wenn du thermdat.txt öffnen willst, musst duschreiben.Code cpp:1
ifstream in( datei );
Code cpp:1
if (in.is_open())
Besser:
Code cpp:1 2 3
string zeile; while( getline( in, zeile)) // solange Dateieende nicht erreicht {
Ansonsten mal das Arbeitsverzeichnis beim Ausführen überprüfen und ggf. selber in der Konsole starten oder einen absoluten Pfad verwenden.
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Moin ihr beiden,
habe das Programm ohne die Vorschläge von Matthias direkt aus dem Ordner per "cmd-konsole" gestartet. Aber das hat leider auch nicht funktioniert.
@Matthias:
Habe deine Vorschläge umgesetzt; allerdings meckert er dann bei "datei":
Code cpp:1 2 3
string datei = "wasser.txt"; ifstream in( datei ); // Textdatei einlesen
Ich weiß nicht warum. Wenn ich direkt "wasser.txt" reinschreib akzeptiert er es. Allerdings funktioniert das einlesen dann auch nicht.
In die if-Schleife kommt er auch bei
nicht rein.Code cpp:1
if (in.is_open())
Wie funktioniert das mit dem absoluten Pfad? Das würde ich dann nämlich lernen und versuchen.
Vielen Dank euch
fujiGeändert von fujifilm (21.09.11 um 12:45 Uhr)
-
Hallo,
der Konstruktor akzeptiert kein string-Objekt sondern nur einen nativen C-String. Schreibe daher:
Code cpp:1
ifstream in( datei.c_str() ); // Textdatei einlesen
Ein absoluter Pfad ist eine vollständige Pfadangabe, beginnend mit dem Laufwerk. Also statt "wasser.txt" verwendet man "c:/irgendwas/hier/dort/wasser.txt".
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Moin,
@MCoder: Super, zwei neue Sachen auf einen Schlag gelernt.
Aber es funktioniert leider immer noch nicht.
Beim builden kommt nur ein Warning, wenn ich das Programm ausführe, kommt er einfach nicht in die if-schleife.
Ich hau jetzt nochmal den kompletten Quellcode hierrein, vllt. übersehe ich ja was:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#include<iostream> #include<cmath> #include<fstream> #include<string> #include<sstream> using namespace std; int main() { //double NasaKoeff [7][10]; int a = 1; string datei = "E:\Julius\Programme\Wascana\Workspace\Temperatur\thermdat.txt"; ifstream in(datei.c_str()); // Textdatei einlesen cout<<"test"<<endl; if (in.is_open()) { cout<<"alles klappt"; string zeile; while( !in.eof())// solange Dateieende nicht erreicht { getline( in, zeile); // zeilenweise einlesen cout<<zeile<<endl; cout<<a<<endl; a++; } } else { cout <<"Leider ist beim lesen der Datei thermdat.txt ein Fehler aufgetreten"; } return 0; }
Den Pfad habe ich übrigens aus dem Explorer kopiert, daran sollte es nicht liegen.
-
Hallo,
wenn du Backslashes verwendest, dann müssen diese in C/C++ gedoppelt werden, weil der Compiler dieses Zeichen sonst als Einleitung für eine ESC-Sequenz interpretiert.
Also so:
Code cpp:1
string datei = "E:\\Julius\\Programme\\Wascana\\Workspace\\Temperatur\\thermdat.txt";
Alternativ könnte man bei Pfadangaben auch Slashes ( / ) verwenden, was noch den Vorteil hat, dass sie auch auf anderen Plattformen (Linux) funktionieren.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Hi MCoder,
habe das verbessert und das warning tritt nun nicht mehr auf. Allerdings schafft er es immernoch nicht in die if-schleife.
Kann das am Dateieninhalt liegen?
Viele Grüße
fuji
-
Das Öffnen der Datei sollte erstmal unabhängig vom Dateiinhalt funktionieren. Wenn du sicher bist, dass der Pfad stimmt, fällt mir gerade nur noch ein, dass es vielleicht ein Problem mit Leserechten in dem Verzeichnis sein könnte.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Moin an alle,
@MCoder: Jap, daran lags. Hab den Inhalt der Datei in eine neue kopiert und schon hat es funktioniert.
@all: Vielen Dank für eure Hilfe. Auf jede Frage eine Antwort bekommen. Superforum!
Gruß
fuji
EDiT: Fehler der hierbei noch passieren kann ist, dass die Datei datei.txt heißt; bzw. in Wahrheit dann: datei.txt.txt
Falls jemand hier mal wieder vorbeischaut
Geändert von fujifilm (23.09.11 um 12:17 Uhr)
-
23.09.11 13:31 #15
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Problem beim Einbinden einer swf-Datei
Von guenter024 im Forum Flash PlattformAntworten: 1Letzter Beitrag: 18.06.09, 13:03 -
Ausgabe einer PHP Datei and anderem Ort einbinden
Von funnytommy im Forum PHPAntworten: 2Letzter Beitrag: 04.05.07, 18:23 -
Einbinden einer css-Datei
Von peter333 im Forum CSSAntworten: 3Letzter Beitrag: 29.12.06, 23:31 -
Einbinden einer css-Datei
Von peter333 im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 29.12.06, 23:31 -
Probs beim einbinden von jpgraph-datei in php-datei
Von spittlebug im Forum PHPAntworten: 1Letzter Beitrag: 28.05.04, 16:15





Zitieren
Login






