Strukturen und Strings



  • Hallo,

    Ich glaube du suchst das:

    #include <string.h>
    #include <iostream>
    using namespace std;
    struct options
    {
        ::std::string name;
        char *type;
        int defaultVal;
        char *help;
        char *verify;
    };
    
    struct driverparam : options
    {
        char *name;
        options paramOptions;
    };
    
    int main(){
        driverparam b;
        b.defaultVal = 2;
        ::std::cout << b.defaultVal;
    }
    

    MFG winexec*



  • string.h ist ein ANSI-C Headerfile, welches die Funktionen strcpy usw. definiert. Die heisst aber in C++ cstring.

    Also um jetzt mal alles richtige zusammenzusammeln und alles falsche zu kürzen, so muss es sein (Anmerkung: ohne using, mit std::, beides zusammen ist überflüssig und :: vor dem std erst recht 😉 ):

    #include <string>
    #include <iostream>
    
    struct options
    {
        std::string name;
        char *type;
        int defaultVal;
        char *help;
        char *verify;
    };
    
    struct driverparam
    {
        char *name;
        options paramOptions;
    };
    
    int main(){
        driverparam b;
        b.paramOptions.defaultVal = 2;
        std::cout << b.paramOptions.defaultVal << endl;
    }
    


  • Wenn ich es mit

    ::std::string name;
    

    probiere kommt ein Fehler

    parse error before `:'

    Probiere ich es mit

    std::string name;
    

    kommt der Fehler

    parse error before `std'

    Gebe ich den Namen der Include-Datei nur mit "<string>" an, kommt der Fehler, dass die Datei nicht gefunden wurde.

    Ich arbeite unter einem QNX 6.3. Der Compiler ist ein GCC. Ich glaube in der Version 2.95.3

    mfg chuqa



  • Hallo,

    Also um jetzt mal alles richtige zusammenzusammeln und alles falsche zu kürzen, so muss es sein (Anmerkung: ohne using, mit std::, beides zusammen ist überflüssig und :: vor dem std erst recht )

    Da hast du Recht, aber "meine Methode" geht auch. 🙂

    Ja, einmal reicht, war nur dazugefuscht. 🤡

    MFG winexec*



  • Gebe ich den Namen der Include-Datei nur mit "<string>" an, kommt der Fehler, dass die Datei nicht gefunden wurde.

    Wenn er <string> nicht findet, kann es sein, das er keine C++ Standard Bibliothek unterstützt. Evtl. mußt du diese zus. deinem Compilerkit hinzufügen, damit du eine ISO-konforme C++ Compilerumgebung hast.

    Die Fehler davor sind eine Folge davon, das <string> nicht gefunden wurde.



  • winexec* schrieb:

    Hallo,

    Also um jetzt mal alles richtige zusammenzusammeln und alles falsche zu kürzen, so muss es sein (Anmerkung: ohne using, mit std::, beides zusammen ist überflüssig und :: vor dem std erst recht )

    Da hast du Recht, aber "meine Methode" geht auch. 🙂

    Ja, aber zwei Tastenschläge zu viel und der Sourcecode wird durch zwei unnötige Doppelpunkte auch nicht besser lesbar. Klar, vieles geht, obs Sinn macht, ist eine andere Frage.



  • Naja also die <string.h> findet er ja. Das Gleiche passiert mit anderen Include-Dateien auch, so z.B. mit <stdio.h>. Nichtsdestotrotz kann er mit dem Datentyp "string" nichts anfangen.

    mfg chuqa



  • Du willst aber nicht die <string.h>, sondern die <string>.

    Wie wäre es mal mit einem Compiler-Update? Wenn du einen Compiler benutzt, der fast ein Jahrzehnt alt ist, mußt du dich nicht wundern, wenn mit Code im aktuellen Standard-C++ was schief geht.



  • Ist <string.h> und <string> das gleiche??? 😮 Nein! Hier interessiert es nicht ob er <string.h> findet, da es was anderes als <string> ist. Wir reden hier von Nullen und Einsen, und nicht von Gefühlen. 😉



  • g, okay, okay.
    Ihr habt ja recht. Der Compiler findet auch <string> man muss halt nur bei der Dateiendung des Files, welches kompiliert werden soll, ein c mehr ranhängen (
    .cc anstatt *.c)*ditsch. Also ein richtig schöner dummer Fehler von mir.
    Ich danke euch, für eure Hilfe

    mfg chuqa


Anmelden zum Antworten