Strings in Funktionen verwenden

Tempo

Grünschnabel
Hallo,

ich bin ziemlich neu in C++. Ich versuche derzeit einen Config-Maker für Counter-Strike zu programmieren. Dieser soll halt eine Konfigurationsdatei für das Spiel erstellen. Es fragt halt der Reihe nach alle Befehle ab und der User muss dann den Wert eingeben.

Funktioniert soweit ja auch ganz gut. Doch nun habe ich ein Problem mit dem Schreiben der Datei.

Code:
// ...code...
string path;

getline(cin, path);

ofstream writefile; 
writefile.open(path); // FEHLER
writefile << output; 
writefile.close();

Die Zeile die den Kommentar "// FEHLER" trägt stellt eben das Problem dar. wenn ich anstatt writefile.open(path); einfach writefile.open("PFAD/ZUR/ZU/SCHREIBENDEN/DATEI"); eingebe, funktioniert alles wunderbar.

Deswegen lautet die Frage eben: Wie kann ich in dieser Funktion die Variable path verwenden?

Es wäre ausserdem nett, wenn mir einer sagen könnte ob es eine ähnliche Funktion wie in PHP gibt, die überprüft ob eine Variable leer ist. Bei PHP lautet diese empty();, doch bei C++ meckert mein Kompiler rum. Ich verwenden Dev-C++ in der neuesten Version (Beta).


Wäre nett wenn mir jemand helfen könnte.


Grüße,
Tempo
 
Zuletzt bearbeitet:
Hi.

Was ist denn die Eingabe die der Benutzer macht? Wie kommst du darauf, das der Fehler in der Zeile auftritt? Wie ist die Fehlermeldung?

Außerdem solltest du überprüfen ob die Eingabe erfolgreich war und dementsprechend ob die Datei geöffnet werden konnte.

Gruß
 
Der Fehler kann eben nur in der Zeile sein, weil diese Teile nach fehlerhaften kompilieren markiert wird. Und 2. Weil wenn ich dort eben nicht meinen String sondern es "manuell" eingebe also z.B. "config.cfg" dann funktioniert das ohne Probleme. Aber in den String wird nach der Eingabe auf jeden Fall ein Wert gesetzt, weil nämlich nach der Einhabe erstmal noch ein Text kommt, wo der Eingebene Wert nocheinmal erwähnt wird. Ich Denke ich weiß eben einfach nur nicht, wie ich Variablen in einer Funktion einsetze. In Php würde ich z.B. bei der funktion empty einfach empty($variable); eingeben. Hier bei C++ geht das mti den Variablen anscheind nicht so einfach.

Achso, ausserdem will ich die Datei nicht nur öffnen, sondern erstellen und schreiben...

Hier ist notfalls nochn screenshot vom kompiler...
http://team-gtg.com/devcpp.fehler.jpg
 
Zuletzt bearbeitet:
Hi,
die open() Funktion erwartet einen const char* und du
übergibst ihr einen string. Du must den String in ein char*
mit der c_str() Funktion wandeln:
Code:
string path = "blablub";
..
writefile.open( path.c_str() );

Eine empty funktion gibt es in C++ nicht, da in der Variablen
immer das Steht was an der stelle im Speicher steht wenn du
sie nicht initialisiert hast.

Benny
 
Zuletzt bearbeitet:
Hi.
Hier ist notfalls nochn screenshot vom kompiler...
http://team-gtg.com/devcpp.fehler.jpg
Du hast da übrigens noch einen kleinen Fehler drin:
C++:
if (getline(cin, answer)); 
{
  ...
}
Nach der Klammer vom if sollte vermutlich kein Semikolon stehen. Das Semikolon (als leere Anweisung) schließt die if Anweisung nämlich schon ab und der Code in dem Block danach wird immer ausgeführt.

Und generell sollte man auch die goto's vermeiden - Stichwort: Spaghetticode.

Gruß
 

Neue Beiträge

Zurück