[gelöst] Probleme mit wcout, wstring etc



  • Auf android hatte ich den Namespace vergessen. Ich hatte bei meiner Fehlersuche nicht daran gedacht, dass es daran liegen könnte. 🙂 Bei VS guck ich nochmal nach, wenn ich zu Hause bin.
    Edit: Am Namespace liegt's da aber nicht. Und die Darstellung ist es auch nicht, sonst würde es ja wenigstens kompilieren.



  • Wie gesagt, zitier den Compiler Fehler und denn Code den du zu kompilieren versuchst.



  • Der Compilerfehler zeigt wirklich genau das an, was ich oben geschrieben habe: Kann nicht von einem wide char Array zu einem wide string umwandeln.



  • Zeig Originalcode!

    Wenn ich Deinen Codezeilen aus dem Eingangsposting

    #include <string>
    #include <iostream>
    
    using namespace std;
    

    voranstelle, kompiliert es mit VS2015 einwandfrei.



  • Bin jetzt zu Hause und mit allen Schulaufgaben fertig und habe es auch mal probiert: An der write-Funktion an sich liegt's echt nicht, auch nicht am Aufrufen. Hab jetzt dieses Testprojekt, und es kompiliert:

    stdafx.h:

    #pragma once
    
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    
    // TODO: reference additional headers your program requires here
    #include <iostream>
    #include <string>
    
    using namespace std;
    

    write.h:

    #pragma once
    #include "stdafx.h"
    
    void write(wstring text);
    

    write.cpp:

    #include "stdafx.h"
    #include "write.h"
    
    void write(wstring text)
    {
    	wcout << text;
    }
    

    Wchar write test.cpp:

    #include "stdafx.h"
    #include "write.h"
    
    int main()
    {
    	system("chcp 65001");
    	write(L"ü");
    	string x;
    	cin >> x;
    }
    

    Also verstehe ich echt nicht, warum der Fehler aus dem Bild hier auftaucht:
    https://ibb.co/bHz8VF

    Edit: nochmal kompiliert und jetzt werden nur noch die unteren 4 Errors angezeigt.



  • Na offensichtlicherweise nimmt die 'write'-Funktion ein std::string. Steht in der Fehlermeldung auch so da.



  • Guck dir die write Funktion aus deinem Projekt nochmal ganz genau an, es wird da einen kleinen Unterschied geben zu der write Funktion die du hier gepostest hast und zwar schon in der Signatur.



  • Die Funktion aus dem Hauptprogramm direkt rüberkopiert:

    void write(wstring text)
    {
    	wcout << text << endl;
    }
    

    Der Parameter ist doch ein wstring, kein string. Also nimmt die Funktion doch keinen string.



  • Och man, im Header ist es falsch. Ich bin so unfähig. Ich hab jetzt 2 Tage diesen Fehler gesucht und es liegt einfach am Header.



  • Den Rest schaffe ich alleine, danke. Den Anfang hätte ich ja auch schon alleine schaffen sollen.



  • Hier noch als Dankeschön für die Hilfe gezeigt, wie man den Text richtig darstellt:

    stdafx.h:

    #include <iostream>
    #include <string>
    
    //für _setmode
    #include <io.h>
    #include <fcntl.h>
    
    using namespace std;
    

    write.h:

    #pragma once
    #include "stdafx.h"
    
    void write(wchar_t* text);
    

    write.cpp:

    #include "stdafx.h"
    #include "write.h"
    
    void write(wchar_t* text)
    {
    	wprintf(L"%s", text);
    }
    

    main.cpp:

    #include "sdtafx.h"
    #include "write.h"
    int main()
    {
    	//Die Konsole auf Unicode umstellen
    	_setmode(_fileno(stdout), _O_U16TEXT);
    
    	//Restlicher Code
    }
    

Anmelden zum Antworten