Unsigned Short?
-
Welche FAQ?
Wo?
-
In der Forenübersicht ganz nach unten fahren, da kommen dann die FAQs.
-
danke, aber ehrlich gesagt verstehe ich kein wort.lol
-
Ich kaufe mir bald noch ein paar Bücher über C++ und da wird das auch behandelt.
Ich werde mir es dann mal genauer anschauen.
Gibt es nicht eine Methode um den basic string in ein unsigned short umzuwandeln? Gibt es da keine Methode?
Bräuchte ich nur so zum ersatz für diese Stream-sache. Sonst kann ich den Rest nicht weitererlernen. Ich mache mir nämlich immer kleine Programme, die immer umfangreicher und nützlicher werden, wenn ich was dazu gelernt habe. Und gerade bin ich so bei strings und variablentypen in klassen und funktionen und so. Und da mir sonst kein sinnvolles programm einfällt, speichert und lädt das Programm halt diese Typen und bearbeitet sie.
Könntet ihr mir so lange eine Ersatz Funktion zum öffnen geben? Oder halt einen tipp wie ich das zum laufen kriege?
MFG Muffin Man
-
Muffin Man schrieb:
Könntet ihr mir so lange eine Ersatz Funktion zum öffnen geben? Oder halt einen tipp wie ich das zum laufen kriege?
MFG Muffin ManDas Problem genau genug beschreiben, damit man dir helfen kann. basic_string ist kein vollständiger Typ, unsigned short ist einer, aber hat vermutlich nicht viel mit dem Problem zu tun, weil dahinter noch ein * fehlt.
-
OK.
Also mein genaues Problem ist:
Die folgende Fehlermeldung kommt, wenn ich kompiliere:error C2664: '_wsopen' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'const unsigned short *' nicht moeglich Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
das ist mein code:
#include "stdio.h" #include "iostream" #include "io.h" #include "share.h" #include "fcntl.h" #include "errno.h" #include "string" #include "stddef.h" using namespace std; class dataset { public: int path; }; char string1 = "C:\\Eigene Dateien\\value1.vl"; char string2 = "E:\\Werteordner\\value1.vl"; char string3 = "E:\\Werte\\value1.vl"; dataset ds; int main() { cout << "Dieses Programm liest Integer Variablen\naus einer .vl Datei und gibt sie aus\n"; cout << "Von welchem Pfad möchten sie lesen?\n1 = C:\\Eigene Dateien\\value1.vl\n2 = E:\\Werteordner\\value1.vl\n3 = E:\\Werte\\value1.vl\n\n"; cin>>ds.path; if (ds.path == 1) { _wsopen (string1, 2, 256, 32); } if (ds.path == 2) { _wsopen (string2, 2, 256, 32); } if (ds.path == 3) { _wsopen (string3, 2, 256, 32); } cout << "\nDie Datei enthält folgende Werte:\n"; cout << "\n\n\n\n"; }
Könnt ihr aus der Fehlermeldung schlau werden?
-
Eine kleine korrigierung:
Die chars habe ich so definiert:char string1[200] = "C:\\Eigene Dateien\\value1.vl"; char string2[200] = "E:\\Werteordner\\value1.vl"; char string3[200] = "E:\\Werte\\value1.vl";
-
Hat es einen bestimmten Grund, dass du _wsopen benutzt?
Warum nicht _sopen?
Und warum nicht besser gleich die Standard-C++-Dateiströme?
-
- Die Header heißen <cstdlib>, <cstddef>, <iostream>, <io.h> etc. (Wozu auch immer du diese Header da alle brauchst...)
- Der Typ der drei Pfad-Konstanten sollte entweder "const std::string" oder von mir aus auch "const char[]" sein, die feste Array-Größe ist Unsinn - noch geschickter wäre es natürlich, die drei Konstanten auch noch in ein Array zu verpacken und den eingegebenen int als Index zu nehmen
- Eigentlich könnten alle Variablen und Konstanten in main() deklariert sein und damit den globalen Namensraum sauber halten.
- Ach ja, dein Problem: fopen müsste reichen. Wenn du die Stringkonstanten als "const char[]" deklariert hast, müsstest du sie direkt übergeben können, wenn du sie als "const std::string" deklariert hast, musst du stringN.c_str() übergeben.
Und dasselbe Problem hätte er mit C++-Dateiströmen auch gehabt
- natürlich sollte man sie fopen trotzdem vorziehen...
-
Aha,
Danke.
Ich habe dieses _wsopen benutzt, weil die ánderen nicht funktioniert waren und nur noch das überblieb (funzte aber leider auch nicht).
Danke, ich werde es mal versuchen.