string mit unicode zeichen
-
hallo,
ich habe versucht ein Programm zu schreiben, das Passwörter generiert.zuerst erstelle ich einen string, der sämtliche Zeichen enthält:
string allezeichen = ""; char a = nummer; for(int nummer=0;nummer<256;nummer++) { a = nummer; allezeichen = allezeichen + a; }Dann rufe ich über den rand() befehl einzelne Zeichen aus diesem String auf und schreibe sie in ein .txt Dokument.
Ich habe dabei jetzt 2 Probleme:
1.: Wenn ich zB. 10.000 Zeichen aus diesem String abrufen lasse, dann spielt mein Mainboard verrückt; das heißt, es kommen andauernd diese "Fehler-Pieps-Geräusche". Hat jemand eine Idee, woran das liegen könnte?
2.: Wie kann ich mehr als nur diese 255 Ansi Zeichen an meinen String dranhängen? Bzw wie hänge ich Unicode Chars an meinen String?
-
g3bk47 schrieb:
1.: Wenn ich zB. 10.000 Zeichen aus diesem String abrufen lasse, dann spielt mein Mainboard verrückt; das heißt, es kommen andauernd diese "Fehler-Pieps-Geräusche". Hat jemand eine Idee, woran das liegen könnte?
Es sind eben nicht alle ASCII-Zeichen von 0 bis 255 wirklich Zeichen. Viele davon sind Escapesequenzen, die sich nicht direkt darstellen lassen. Der Alarmton ist auch ein solches Beispiel. Du müsstest dich wahrscheinlich auf weniger Zeichen beschränken oder mit Zahlen arbeiten.
g3bk47 schrieb:
2.: Wie kann ich mehr als nur diese 255 Ansi Zeichen an meinen String dranhängen? Bzw wie hänge ich Unicode Chars an meinen String?
Du solltest in diesem Falle nicht
std::string, sondernstd::wstringmitwchar_tbenutzen.
-
Danke für die schnelle Antwort!
Ich habe herausgefunden, dass die chars mit den nummern 7,8,9,10,13,32 und 160 ecapesequenzen oder pieptöne sind.
Allerdings kann ich nicht mit wstring arbeiten.analog zu dem "normalen" string habe ich mit jetzt einen wstring erstellt
wstring unicode = L""; int nummer = 0; wchar_t a = nummer; for(nummer=0;nummer<6000;nummer++) { a = nummer; unicode = unicode + a; }Dann habe ich versucht, mir diesen string anzeigen zu lassen. Bei google habe ich gefunden, dass der Befehl dazu wcout ist. Allerdings kann ich das programm nicht compilieren, da eine Fehlermeldung kommt in der steht, dass wcout unbekannt sei. wstring hingegen kennt er.
Hat Jemand eine lösung für das Problem parat?
-
Tja, dann benutzt du wohl einen Compiler, der nicht die komplette Standard-Library abdeckt. Ich schätze mal, du benutzt MinGW 3.x. Du mußt einen aktuelleren Compiler benutzen.
-
char 32 ist doch keine escape sequenz, das ist ein leerzeichen
-
vlad_tepesch schrieb:
char 32 ist doch keine escape sequenz, das ist ein leerzeichen
jaja, ich meinte Zeichen, die keine "Zeichen" sind xD
Als Compiler benutze ich code::blocks 1.0 mit dem GNU GCC Compiler
-
Codeblocks ist KEIN Compiler. Also, ich vermute mal, du benutzt den mitgelieferten MinGW 3.x.
-
Jo hast recht (ich beschäftige mich noch nich lange mit programmierung :>)
Löse ich mein Problem, in dem ich code blocks irgendwie update oder muss ich auf einen andern compiler umsteigen? Wenn ja, welchen könnt ihr mir empfehlen?
-
Wenn dir Codeblocks als IDE gefällt, reicht es natürlich den Compiler zu wechseln. Da würde ich das kostenlose Windows SDK von MS runterladen, da ist ein sehr aktueller und guter C++-Compiler mit bei. Vorallem auch für 64bit.
http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspxFalls dir Codeblocks nicht zusagt, und du eine andere IDE willst, kannst du natürlich auch das kostenlose VisualC++ 2008 Express Edition runter laden, da ist das Windows SDK auch mit bei.
http://www.microsoft.com/germany/msdn/vstudio/products/express/visualc/default.mspx
-
Achja, vom GCC gibts natürlich auch aktuellere Versionen: 4.2. Aber als MinGW leider noch nicht offiziell, bzw. nur als Technikvorschau:
http://www.mingw.org
-
vielen dank! habt mir geholfen
