#include <fstream> bereitet Probleme
-
Hallo miteinander,
ich kann folgende Fehler nicht nachvollziehen:
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(12) : error C2065: 'ifstream': nichtdeklarierter Bezeichner
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(12) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'fin'
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(12) : error C3861: "fin": Bezeichner wurde nicht gefunden.
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(14) : error C2065: 'fin': nichtdeklarierter Bezeichner
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(17) : error C2065: 'fin': nichtdeklarierter Bezeichner
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(17) : error C2065: 'noskipws': nichtdeklarierter Bezeichner
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(19) : error C2065: 'fin': nichtdeklarierter Bezeichner
1>e:\dokumente\uni\prog ii\prog ii\projekt5\funktionen.cpp(19) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.Mein Programmsnippet sieht folgenermaßen aus:
1 #include "projekt5.h" 2 #include <iostream> 3 #include <fstream> 4 #include <iomanip> 5 6 7 8 int statistik( char const dateiName[] ) 9 { 10 char n_ascii[ 128 ] = { 0 } ; 11 int m = 0 ; 12 ifstream fin( dateiName ) ; // öffne Lesedatei 13 14 if ( fin ) // Datei bereit? 15 { 16 char n ; 17 fin >> noskipws ; 18 19 while ( fin >> n ) 20 { [...]Durch das #include <fstream> und #include <iomanip> werden doch aber eben "ifstream", "fin" und "noskipws" inkludiert oder wo liegt mein Fehler?
Sorry für solche Amateur-Fragen, ich kann das aber nicht wirklich nachvollziehen...
Vielen Dank im Voraus.EDIT #1: Wie rücke ich den Quelltext ein??? So kann man ja kaum was erkennen
-
std::ifstream file;
-
Geht das denn nicht anders? Also, so wie ich das da oben habe? Bei anderen Übungsaufgaben klappt das ja auch auf diese Weise, warum aber hier nicht???
Und welche Vorteile hat "std::ifstream file"???
-
Alle Standardheader definieren ihre Klassen im namespace std. Du kannst entweder std::xyz schreiben, oder den Namensraum mit "using namespace std;" auflösen, oder bestimmte Klassen nutzen mit "using std::cout" (dann kann man mit cout << 5; z.B. eine Ausgabe machen.)
Edit:
#include <fstream> #include <iostream> int main() { std::cout << "Hallo, Welt\n"; std::ifstream f1("blubb.txt"); using std::cout; cout << "Hallo, Welt\n"; std::ifstream f2("blibb.txt"); using namespace std; ifstream f3("blabb.txt"); }
-
Oh Mann, vielen vielen Dank!
Das Programm besteht aus zwei Quelldateien und einer Header-Datei, und das "using namespace std ;" war bereits in der einen Datei, deswegen wusste ich nicht, dass das auch in die andere datei reinmuss... Vielen Dank!
Kann ich das also so verstehen, dass "using namespace std ;" alle Standardheader zusammenfasst?
Vielen Dank jedenfalls

Eine weitere Frage wäre dann jedoch unabhängig hiervon:
Ich habe einen Array der Länge 128 bei dem ich für jeden Ascii-Wert einen Platz reservieren möchte. Beim Auslesen eines Textes soll jetzt entsprechend jeder Array-Platz erhöht werden abhängig vom gelesenen Ascii-Zeichen.
Im Anschluss möchte ich diese Werte jedoch der Häufigkeit nach sortieren.
Mir fällt dabei leider nur eine Möglichkeit, die sehr umständlich und auch nicht sehr effizient zu sein scheint: Man könnte doch die Array-Inhalte paarweise miteinander vergleichen, oder? Würde das klappen?
Oder gibt's viel bessere und kürzere Möglichkeiten?Vielen Dank nochmal

-
VollNoob schrieb:
Kann ich das also so verstehen, dass "using namespace std ;" alle Standardheader zusammenfasst?
Nein. "using namespace std;" löst den Namensraum "std" auf, sodass Klassen/Funktionen/Variablen aus diesem Namensraum jetzt auch infrage kommen, wenn du diese Dinge unqualifiziert ansprichst.
#include <iostream> int main() { using namespace std; cout << "Hallo"; // Nach dem Objekt "cout" wird jetzt auch im Namensraum "std" gesucht. } // Das #include ist aber trotzdem nötig, weil das Objekt "cout" sonst gar nicht bekannt wäre.VollNoob schrieb:
Man könnte doch die Array-Inhalte paarweise miteinander vergleichen, oder? Würde das klappen?
Oder gibt's viel bessere und kürzere Möglichkeiten?Du suchst nach einem Sortieralgorithmus. Der von dir vorgeschlagene wäre quasi "bubblesort". C++ bietet übrigens eine fertige Funktion zum Sortieren: std::sort().
http://www.cplusplus.com/reference/algorithm/sort/
-
Vielen vielen Dank nochmal! Du bist mir echt eine Riesenhilfe gewesen

Danke auch für deine Geduld mit mir
Das wär's dann erstmal von meiner Seite (für's erste zumindest), ich schau mir den Link gleich mal an, danke auch dafür.