Strukturen und Strings
-
Chuqa schrieb:
#include <string.h> struct options { string name; char *type; int defaultVal; char *help; char *verify; };Also bei mir ging es als ich es so abgeändert habe:
#include <string> // <string.h> ist veraltet -> nicht mehr benutzen struct options { std::string name; //namespace (std) angeben char *type; int defaultVal; char *help; char *verify; };
-
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 Hilfemfg chuqa