Hallo, ich schreibe momentan an einem RSS-Reader, der die Feeds filtert und auf einem SQL-Server speichert.
Später will ich die dann über ein Webinterface durchsuchen können. In Autoit hätte ich das ganze wahrscheinlich
in kürzester Zeit programmiert, aber ich will das ganze später auf meinem Raspberry Pi (ARM-Prozessor, Linux)
laufen lassen, deshalb musste ich C++ nehmen. Den Netzwerkteil (

) und den Regexteil (BOOST) habe ich schon erledigt.
Bei dem ersten Test habe ich bemerkt, das Zeichen außerhalb des ASCII-Bereiches (0x20 - 0x7e) nicht richtig dargestellt werden.
Meine erste Vermutung war, dass es an der Konsole liegen muss, das z. B. Ä, Ö, Ü nicht richtig ausgegeben werden
(das Problem hatte ich vor ein paar Jahren schon einmal).
Also habe ich mir einfach mal den String in die Zwischenablage kopieren lassen mit
Code:
bool setClipBoardString(string source) {
if(OpenClipboard(NULL)) {
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.size()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source.c_str()));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
return true;
}
return false;
}
Resultat: selbes Problem!
Das habe ich schon alles ausprobiert:
Clipboard statt Konsole
Unicode einstellen als Zeichensatz in den Projekteinstellungen
wcout statt cout
neues leeres Projekt anlegen und Code weiter unten ausprobieren
main.cpp in Unicode speichern
Code:
#include <iostream>
#include <string>
using namespace std;
void main() {
wstring test;
cout << "ÄÖÜäöü" << endl;
wcout << "ÄÖÜäöü" << endl;
wcin >> test;
}
Verwendete IDE: Visual Studio 2013
Verwendetes Platformtoolset: Visual Studio 2012 (

)
Ich hoffe, es gibt eine einfache Lösung, bei der es dann später auch keine Probleme mit GCC gibt.