hardcodierte character mit ascii, unicode und utf-8
-
hola leute
angenommen ich mach mir eine funktion find die einen stream uebernimmt und nach einem bestimmten zeichen sucht.
template<class CHAR> bool find(std::basic_istream<CHAR> *is, CHAR c) { ... }solange die zu suchenden zeichen <= 127 sind, funktioniert es mit der uebergabe eines normalen chars.
find(is, '=');aber wie macht man es am besten wenn man andere zeichen verwenden will ?
bisher hab ich fuer solche faelle ein struct mit statischen membern gemacht und die jeweils spezialisiert:
template<typename CHAR> struct special_chars { static const CHAR scharfes_s = 0; }; template<> struct special_chars<char> { static const char scharfes_s = 225; // ß }; template<> struct special_chars<wchar_t> { static const wchar_t scharfes_s = 223; // ß }; template<> struct special_chars<int> { static const int scharfes_s = 0xC39F; // ß }; find(is, special_chars<char>::scharfes_s);ob die werte stimmen weiß ich grad net. also haegt euch nicht daran auf.
kennt jemand von euch ne bessere loesung fuer sowas ?Meep Meep
-
Möglichkeit 1: Übergebe einen Unicode-Codepoint (als int32_t oder so), den du vorher aus der UTF-8-Kodierung gewonnen hast.
Möglichkeit 2: Suche nicht nach einem bestimmten Zeichen/Codepoint, sondern nach einem String. Der String kann dann die UTF-Kodierung eines bestimmten Codepoints enthalten.