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,...)).


Anmelden zum Antworten