Wie am geschicktesten Strings verschiedener Typen vergleichen?
-
Hoi,
Ich wollte dem Nutzer die Freiheit überlassen, welche Art Strings er aus einer Datei lesen möchte:template<typename CharType> Info<CharType> parse(......) { Info result; std::basic_ifstream<CharType> info("....."); while(info) { Detail::InfoParser<CharType> parser; while(info >> parser && parser.value.first != "abcdefgh") } }Das Problem liegt hierbei beim Vergleich mit dem string. Wenn der Nutzer zb char16_t möchte, dann klappt der Vergleich mit dem einfachen Stringliteral natürlich nicht.
Was würdet ihr empfehlen? Das Ganze sollte möglichst elegant sein.

Danke und Grüße,
Ethon
-
Das klappt nie, wenn du dem Nutzer das Encoding freilassen möchtest.
Ansonsten hast du seit C++11 die Möglichkeit, Strings mit der Initializer-List zu initialisieren. Vergleiche dann auf
std::basic_string<CharType>{static_cast<CharType>('a'),static_cast<CharType>('b'),static_cast<CharType>('c'),...,static_cast<CharType>('h')}(die Punkte sind hier leider keine C++-Syntax)
-
Super Idee, da der String in jedem Fall nur aus einfachen alphabetischen Zeichen besteht, dh. a-zA-Z.
Das sollte mit keiner mir bekannten Zeichencodierung knallen.