wchar_t: mit Unicode-Nr Wert zuweisen.....
-
dumme frage: wollt mir eine Tabelle fuer den Unicode zurechtfrimmeln... fuer ASCII-Code hatte ich mir mal den Code hier zurechtgeschrieben:
int main() { string Path; cout << "where do you want this file to be written to? \n"; cout << "enter path: "; getline(cin, Path); ofstream File(Path.c_str() ); char AsciiChar; for (unsigned short x=0; x<256; ++x) { File << x << '\t' << (AsciiChar=x) << '\n'; } return 0; }
fuer wchar_t funktioniert das aber nicht (also indem ich bei der Deklaration von AsciiChar einfach von "char" auf "wchar_t" umaendere...) Es wird dann einfach nochmal der Zahlenwert ausgegeben....
BTW: wenn ich mit getline() den String aus der Konsole lesen will, muss ich bei der Eingabe immer 2x mit ENTER bestaetigen bevor er die Eingabe kapiert... warum? (und wie kann ich nochmal einfach 'nen C-String einlesen, dann kann ich mir die ganze string-klasse sparen )
[ Dieser Beitrag wurde am 18.03.2003 um 21:24 Uhr von Blue-Tiger editiert. ]
-
wenn ich mit getline() den String aus der Konsole lesen will, muss ich bei der Eingabe immer 2x mit ENTER bestaetigen bevor er die Eingabe kapiert
Benutzt du den MSVC 6.0?
-
Wenn ja -> STL Fix von meiner Homepage saugen. Meine Adresse ist http://bens.c-plusplus.info
-
wofstream out("file.txt"); for(unsigned short c = 0; c <= static_cast<unsigned short>(-1); ++c) { out << static_cast<wchar_t>(c); }
Dafür sorgen wchar_t unsigned ist, wie findest du in der Compiler Doku.
Helfende Grüße
[ Dieser Beitrag wurde am 18.03.2003 um 21:49 Uhr von Lars editiert. ]
[ Dieser Beitrag wurde am 19.03.2003 um 06:42 Uhr von Lars editiert. ]
-
Es dürfte eventuell auch so gehen:
#include <fstream> #include <limits> using namespace std; int main() { wofstream out("file.txt"); for(wchar_t c = 0; c <= numeric_limits<wchar_t>::max(); ++c) { out << c; } }
Ungetestete Grüße
[ Dieser Beitrag wurde am 19.03.2003 um 06:42 Uhr von Lars editiert. ]
-
Die zweite Variante ist die aufjedenfall die zu bevorzugende, da sie, im Gegensatz zur ersten, portabel ist.
:o Empfehlende Grüsse
-
0 <= static_cast<unsigned short>(-1);
0 <= numeric_limits<wchar_t>::max();
-
Original erstellt von HumeSikkins:
0 <= static_cast<unsigned short>(-1);
0 <= numeric_limits<wchar_t>::max();
er will doch jedes Unicodezeichen ausgeben - zumindestens schliess ich das aus seinem Post.
Missverständliche Grüsse
[ Dieser Beitrag wurde am 18.03.2003 um 22:00 Uhr von Lars editiert. ]
-
Lars: Was soll das mit den Grüßen? Das ist nicht cool.
-
@Lars: wieso 0 <= ...
Missverständliche Grüße zurück
-
Ach du.... Wie blind muss man sein.
-
Original erstellt von Lars:
**Es dürfte eventuell auch so gehen:#include <fstream> #include <limits> using namespace std; int main() { wofstream out("file.txt"); for(wchar_t c = 0; c <= numeric_limits<wchar_t>::max(); ++c) { out << c; } }
Ungetestete Grüße
**
nein, genau da liegt mein Problem.....
Das ist mein Testcode:
for(wchar_t c = 0; c <= 512; ++c) { File << c << '\n'; }
und die Ausgabe in der Datei ist dann:
0 1 2 3 4 5 6 7 8 9 10 11 12 (und so weiter)
-
niemand eine Ahnung?
-
SICHER das du bei der Datei einen wofstream verwendest?
-
Ansonsten Code posten...
-
vermutlich wird wchar_t nicht wie ein builtin behandelt sondern wie ein unsigned short.
Mhm.. hat der VC++6 da nicht nen Bug, oder wars der 5er? (sorry, weiss ich nicht genau)
-
Original erstellt von Lars:
SICHER das du bei der Datei einen wofstream verwendest?ups... sry, hat ich uebersehen... wo ist der Unterschied zu 'nem normalen ofstream?
ich hab's jedenfalls versucht, der Output war net sehr hilfreich:
EDIT: mist, kann das nicht posten... der Beitrag enthaelt dann angeblich unerlaubte Zeichen.... auf jeden Fall erhalt ich nur Datenmuell....
ach ja, das ist mein Quellcode:
#include <fstream> #include <iostream> #include <string> using namespace std; int main() { string Path; cout << "where do you want this file to be written to? \n"; cout << "enter path: "; getline(cin, Path, '\n'); // unsigned short UpperBound; // cout << '\n'; // cout << "till which Code do you want the printout? \n"; // cout << "last element you want to output: \n"; // cin >> UpperBound; wofstream File(Path.c_str() ); // for(wchar_t c = 0; c <= UpperBound; ++c) for(wchar_t c = 0; c <= 512; ++c) { File << c << '\n'; } return 0; }
[ Dieser Beitrag wurde am 22.03.2003 um 18:43 Uhr von Blue-Tiger editiert. ]