Polnische Schriftzeichen in der Konsole
-
Kann mir niemand helfen?
-
Ich habs geschafft! Eigentlich ganz einfach:
#include <windows.h> #include <iostream> #include <fstream> #include <string> using namespace std; int main(void) { SetConsoleOutputCP(1250); cout << "ł Ł ą ę ó ź ż ń ś ć" << endl; system("Pause"); //getchar(); return 0; }
Wichtig ist dabei, dass man dazu beim Speichern ebenfalls die Codierung "Mitteleuropäisch Windows 1250" auswählt und die Schrift in Lucida ändert.
-
Nur, ich hab jetzt noch EIN Problem: Ich möchte polnische Wörter von einer .txt-Datei einlesen, aber diese Symbole werden leider nicht richtig ausgegeben. Habt ihr eine Idee?
-
In welcher Codierung ist die Textdatei denn (UTF8, UTF16, ...)?
Ab C++11 gibt es die passenden Klasse dafür schon in der Standard-Library: codecvt
Edit: Um das Grundproblem zu verstehen, kannst du dir auch mal Reading UTF-8 with C++ Streams durchlesen.
-
Ich habe die Codierung UTF-8. Kannst du mir bitte explizit sagen, was ich schreiben soll? Ich bin mit den Seiten etwas überfordert, bin blutiger Anfänger. Ich stelle mal den Code rein, wie ich es bis jetzt einlese:
#include <windows.h> #include <iostream> #include <fstream> #include <string> using namespace std; int main(void) { SetConsoleOutputCP(1250); string line; ifstream vokabeln; vokabeln.open("Lektion_1.txt", ios_base::in); while (getline(vokabeln, line)) { cout << line << '\n'; } system("Pause"); return 0; }
In der Textdatei steht:
"Bałtyk
Ostsee
Tatry
Tatra"
-
RobertB schrieb:
Ich bin mit den Seiten etwas überfordert, bin blutiger Anfänger.
Kannst Du nicht einfach einen Englischvokabeltrainer programmieren? Und auch in dem würde ich deutsche Umlaute nicht vorkommen lassen, bzw. ersetzen.
Sich großartig mit der Codierung von Zeichensätzen usw. zu beschäftigen hilft nämlich nicht beim C++ lernen.
-
Ich brauche aber leider diesen Trainer, mit Sonderzeichen -.-. Ich brauche doch eig. nur noch das Einlesen bzw. später das Schreiben in eine Textdatei, der Rest ist doch dann nicht mehr so kompliziert.
-
Hast du denn einen C++11 Compiler?
Ansonsten mußt du halt den Weg aus dem von mir verlinkten Artikel gehen oder dir eine UTF8-Lib suchen, z.B. UTF8-CPP: UTF-8 with C++ in a Portable Way.
Das ist nunmal kein einfaches Thema, s.a. UTF-8 Everywhere.
Ich persönlich würde dir ja dafür zu C# raten, da .NET intern UCS2 (UTF-16) benutzt und die ganzen Encodings schon eingebaut hat...
-
Ist C# arg anders als C++, ich meine z.B. die ganzen Befehle?
-
Sieht in etwa so aus:
using System; using System.IO; using System.Text; namespace MyApplication { public class Program { public void Main() { string text = File.ReadAllText("vokabeln.txt", Encoding.UTF8); Console.WriteLine(text); } } }
- und das solltest du wohl verstehen
Die meisten Keywords (wiefor, while, if, else, ...
gibt es selbstverständlich auch...
Beim obigen Programcode müßtest du, wenn du es auf der Konsole ausführst, natürlich dort dann ebenso eine passende Schriftart und CodePage (wie beim C++ Programm) auswählen.
Aber in C# läßt sich mit WinForms auch schnell und einfach eine GUI erzeugen, so daß du dann diese Probleme mit der Konsole nicht mehr hättest.
PS: Ich bin Moderator im C#-Forum der Entwickler-Ecke