Auf ein Variable aus einer if-Schleife von außerhalb zugreifen
-
Moin Moin,
ich habe eine Frage bezüglich ganz normalen Variablen in C++ (Microsoft Visual Studio). Ich habe ein kleines Script, in dem ich in einer if-Schleife eine Variable erstelle, deklariere und initialisieren.#include <iostream> #include <fstream> using namespace std; int main() { fstream datEingabe; datEingabe.open("C:\\Users\\User\\Documents\\Test\\test.txt", ios::in); if (datEingabe.good()) { char chZeile[80]; datEingabe.getline(chZeile, 80); datEingabe.close(); cout << chZeile; } else { cout << "Data import is unsuccessful"; } //cout << chZeile; // Hier müsste ich drauf zugreifen return 0; }
Ich brauche nun aber diese Variable auch von außerhalb dieser Schleife (markiert).
Ich habe es mit einem einfachen "public" davor probiert, bin allerdings gescheitert.
Wie kann ich diese Problem lösen?Vorab schonmal Danke.
Viele Grüße
Jannis
-
- Warum brauchst du sie ausserhalb? Im Fehlerfall ist sie ja nicht sinnvoll gefüllt
- benutze std::string, nicht char-Arrays
- es gibt keine if-Schleife
-
Variablen haben immer eine bestimmte Gültigkeit. Wenn du lole Variablen in einer Funktion definierst ist die Angegeben von dem, mit
{}
markierten Bereich außen herum.
D.h. in deinem Fall endet die Gültigkeit mit der geschlossenen Klamme}
am Ende des if-zweigs.Wenn du eine Variable benötigst, die außerhalb dieses Bereiches gültig ist, muss du die auch außerhalb des Bereiches definieren. Sie ist in den untergeordneten Zweigen dann trotzdem gültig.
In deinem Fall
char chZeile[80]; if (datEingabe.good()) { datEingabe.getline(chZeile, 80); datEingabe.close(); cout << chZeile; } else { cout << "Data import is unsuccessful"; } cout << chZeile; // Hier müsste ich drauf zugreifen
P.S. Woher kommt eigentlich der Begriff "if-Schleife", ist mir jetzt hier schon mehrfach untergekommen.
-
@manni66
- Ich brauchte sie hier nicht unbedingt außerhalb. Ich hatte es auch schon anders versucht, allerdings dachte ich, dass es doch irgendwie gehen muss und habe deshalb nachgefragt.
- Danke für den Tipp mit std::string.
- Der Begriff if-Schleife kommt von meinem Informatiklehrer.
Danke für die schnelle Antwort.
-
@Schlangenmensch
Dankeschön für die ausfühliche Antowrt.
Dann weiß ich jetzt bescheid und werde die Variablen in Zukunft außerhalb der {} schreiben.P.S.: Der Begriff kommt von meinem Informatiklehrer
-
@Jannis123 sagte in Auf ein Variable aus einer if-Schleife von außerhalb zugreifen:
Der Begriff if-Schleife kommt von meinem Informatiklehrer.
Unfassbar! Gibt es bei euch denn auch eine Funktionschleife und eine Klassenschleife? Nicht alles, was {} hat, ist eine Schleife. Schleife bedeutet, man kommt wieder da vorbei, wo man schon einmal war, aka Wiederholung.
-
@manni66 sagte in Auf ein Variable aus einer if-Schleife von außerhalb zugreifen:
Unfassbar! Gibt es bei euch denn auch eine Funktionschleife und eine Klassenschleife?
Ja, Funktionschleifen gibt es, Klassenschleife allerdings nicht. Kann natürlich auch sein, dass diese vom Unterricht her erst noch kommen...
Nicht alles, was {} hat, ist eine Schleife.
Danke für noch einen wertvollen Tipp
-
Du bist gerade im Äquivalent eines Tenniskurses, wo der Lehrer von "Toren" und "Abseits" erzählt. Kein Scherz. Bist du sicher, dass du den Kurs weiter besuchen solltest?
-
@Jannis123 sagte in Auf ein Variable aus einer if-Schleife von außerhalb zugreifen:
Dann weiß ich jetzt bescheid und werde die Variablen in Zukunft außerhalb der {} schreiben.
Ich denke nicht, dass das wirklich das Fazit sein sollte. Die sollte nur da stehen, wenn du sie tatsächlich da brauchst. Allgemein ist es immer besser die Variablen weiter innen zu haben, anstatt weiter außen.
-
@Jannis123 sagte in Auf ein Variable aus einer if-Schleife von außerhalb zugreifen:
Dann weiß ich jetzt bescheid und werde die Variablen in Zukunft außerhalb der {} schreiben.
Die Faustregel dazu ist, Variablen immer soweit nach innen zu ziehen wie möglich, damit man die Gültigkeiten, insbesondere bei größeren Projekten, im Griff hat. Außerdem kann der Compiler dann besser / einfacher optimieren.
-
@Schlangenmensch
@Leon0402
Das klingt sehr gut.
Dankeschön für die wertvollen vielen Tipps.
-
@Schlangenmensch sagte in Auf ein Variable aus einer if-Schleife von außerhalb zugreifen:
Die Faustregel dazu ist, Variablen immer soweit nach innen zu ziehen wie möglich, damit man die Gültigkeiten, insbesondere bei größeren Projekten, im Griff hat.
Nicht nur damit man die Gültigkeiten besser im Griff hat. Sondern auch damit man die Variablen möglichst gleich bei der Definition mit einem sinnvollen Wert initialisieren kann - und oft auch
const
machen.
-
pack das if in eine Funktion und benutze return. Der Compiler wird dir dann sogar sagen, falls für einige Fälle das return noch fehlen sollte.