string problem
-
hallo, ich möchte mit dem C++ Borland Builder 5.0 ein Porgramm schreiben das eine datei erzeugt ( es ist nur eine funktion, das programm is natürlich größer).
also steht da in etwa so was
Die Funktion soll eine Dateinamen mit dem Rückgabewert der Funktion Kd.Datei(); erzeugen. (fstream f; ist schon vorher erzeugt worden) #include <string.h> int funktion(kunde kd) { string dateiname; dateiname=kd.Datei()+".txt"; // das mit + müsste doch möglich sein bei // strings ? f.open(dateiname, ios::out); }ich muss wohl das sting in char umwandeln aber
das funktioniert nicht.int funktion(kunde kd) { char dname[50]; string dateiname; dateiname=kd.Datei()+".txt"; // das mit + müsste doch möglich sein bei // strings ? dname=dateiname.c_str(); f.open(dname, ios::out); }Kunde ist eine Klasse mit Attributen unter anderem string Name. in der Klasse Kunde gibts eine Methode Datei() die einfach string Kunde::Datei() { return Name; }___________________________________________________________________________
Außerdem hab ich noch ein allgemeineres Problem mit dem String Datentyp.#include <string.h> . . string x="hallo"; string y=hallo"; if (x==y) cout << "gleich"; else cout << "ungleich"; return; . .die if Abfrage wird einfach ignoriert , beim debuggen springt er sofort zu return ? ...
über ein paar hinweise würde ich mich sehr freuen.
chris
-
chri5 schrieb:
int funktion(kunde kd) { string dateiname; dateiname=kd.Datei()+".txt"; // das mit + müsste doch möglich sein bei // strings ? f.open(dateiname.c_str(), ios::out);//open will char* }Kunde ist eine Klasse mit Attributen unter anderem string Name. in der Klasse Kunde gibts eine Methode Datei() die einfach string Kunde::Datei()// bescheuerte namensgebung nenn es get_name oder so { // aber nicht datei. ich meine wer kommt darauf das die return Name; // funktion datei einen namen zurückgibt ?? } // ausserdem könntest du ne const ref zurückgeben // und dann auch gleich die funktion const machen#include <string.h> string x="hallo"; string y=hallo";// parser error ? "hallo" nicht hallo" if (x==y) cout << "gleich"; else cout << "ungleich"; return; . .
-
außerdem benötigst du den Header <string> und nicht <string.h> (letzterer stammt noch aus C und enthält dessen char*-Verarbeitung (strcpy,strcat,strcmp,...)).