AnsiString



  • Was hat es mit "AnsiString" auf sich ? Welche Header sind einzubinden. ...kleines Beispiel:
    AnsiString s = AnsiString("a")+"b";

    Danke



  • achso 😡



  • Original erstellt von <Eckes>:
    **Was hat es mit "AnsiString" auf sich ? Welche Header sind einzubinden. ...kleines Beispiel:
    AnsiString s = AnsiString("a")+"b";

    Danke**

    ist kein standard c++, da gibts nur string.. ist borland.. frag mal im borland forum



  • das davor war ich nicht !!!

    ...nochmal zum Thema Strings:
    wie kann ich einen String (anstelle Char) in einer Struktur deklarieren und dann später auch anwenden ?

    Beispiel:

    struct adr {
    char name[16];
    int plz;
    char ort[26];
    };
    ......
    adr adresse;
    ......
    cin>>na;
    ......
    } while(strcmp(na,adresse.name)!= false);

    cout<<adresse.name<<"\n";
    cout<<adresse.plz<<"\n";
    cout<<adresse.ort<<"\n";

    FILE.clear();
    FILE.close();

    getchar();
    }



  • für AnsiString : vcl.h
    zu letzterem : schau dir std::string an



  • vielen Dank

    Mein Problem gestalltet sich folgendermassen:

    In der Struktur "adresse" habe ich ein Element "name" (Typ char).
    ---
    In der Eingabeprozedur wird die entsprechende Instanz "adr" gefüllt.
    ---
    Im Programm wird eine Variable na (ebenfalls char) mittels cin beschickt, um danach zu suchen (bzw. um damit zu vergleichen).

    Sobald ich in der Eingabe ein Leerzeichen habe, wird ein Element übersprungen und das übernächste Element mit dem nächsten(auf das Leerzeichen folgende) Zeichen bestückt.
    Meine Experimente mit Strings führen zu diversen Fehlermeldungen. Unter anderem, dass const char nicht in int konvertiert werden kann. (char wird aber für diverse includierte Funktionalitäten benötigt).

    Wie bekomme ich das mit den Leerzeichen hin ?



  • hat sich erledigt



  • ... das hat sich nicht erledigt ... wirklich ein toller Scherz

    Der obige Beitrag war nicht von mir. Kann mir jemand helfen ?



  • Hi,

    gegen solche Scherze hilft nur ein, registrieren. 🙂

    eine ganze Zeile liest man mit getline ein:

    string wort;
    
         getline(cin,wort); // liest bis zum return ein
    
         wort.c_str(); // liefert einen nullterminierten string im char array format zurück
    

    grüße Con@n



  • Hallo Eckes,

    ersetze cin>>na; durch gets(na); //sowieso am besten

    Damit ist das Problem mit den Leerzeichen gelöst und das char name[16] kann weiterverwendet werden. Deine "includierten Funktionalitäten" bleiben davon unberührt.
    So wie ich das verstanden habe, funktionierte es bisher (nur mit den Leerzeichen hattest du Probleme).



  • Vieleicht hat noch jemand eine andere Lösung ?



  • Danke, funktioniert.

    Warum ist gets() am besten. Was geht denn noch ?



  • ignorier linux, conan hat recht.
    es sei denn, du willst deine struktur als raw data in eine datei schreiben. ist aber nicht sehr fein, es sei denn du hast sehr grosse dateien und musst haeufig einzelne datensaetze in der mitte lesen.
    ich weiss nicht, ob du intrudor richtig verstanden hast, deine struktur sollte jetzt so aussehen:

    struct adr {
        std::string name;
        int plz;
        std::string ort;
    };
    


  • Hallo Eckes,

    für gets(), genau wie getchar() must du <stdio.h> includieren.

    Alternativ geht aber auch getline(variablenname,zeichenanzahl) !



  • Einfach mal ausprobieren. Gruss

    int main()
    {

    float floatwert = 1.24;
    float gerundetezahl;
    gerundetezahl=static_cast<int>((floatwert*10) + 0.5);
    cout<<(gerundetezahl/10)<<"\n"; // ergibt 1.2
    // Die Rundungsgenauigkeit wird mit steigt mit der Zehnerpotenz

    getchar();
    return 0;
    }



  • Sorry, der letzte Beitrag gehört zu "Runden einer Dezimalzahl".



  • nur, dass man nicht stdio.h sondern cstdio einbindet 😉
    und std::string ist sowieso 10x besser als ein raw-char[]



  • ... na, wenigstens ist deine Antwort witzig


Anmelden zum Antworten