Für verschiedene (C++ 11 std :: string-change-related) Gründe würde ich gerne eine nicht-std :: string verwenden String-Klasse an einigen Stellen in meinem C++ 11-ish-Code, die mit mehreren Versionen von mehreren C++ - Compiler übereinstimmen müssen.Eine portable, std :: string-ähnliche String-Klasse, die nicht std :: string ist
Nun, es macht mir nicht wirklich etwas aus, ob sich meine Strings in C++ 11-style oder post-C++ 11-way verhalten; und ich interessiere mich auch nicht für die Leistung. Ich will nur eine schöne, zuverlässige Zeichenklasse, die mir unter keinen Umständen Fehler gibt, die std::__cxx11::string
und andere solche Voodoo betreffen.
Was sind meine Optionen? Kann/sollte ich die Implementierung eines einzelnen Compilers in meinen eigenen Header-Dateien replizieren? Ist GCC vstring eine Option? Etwas anderes?
Was gilt als "string-like"? Sie sagen, Sie interessieren sich nicht für die Unterschiede - ein Teil des Grundes, dass C++ 11 die Änderung vorgenommen hat, ist, dass die neue Version viel threadsicherer ist. Kannst du klarstellen, was du konkret willst? Willst du nur, dass es in beide Arten von Saiten umwandelbar ist? Warum können Sie nicht einfach zwischen den beiden Typen konvertieren, egal welche Grenzen in Ihrem Projekt angemessen sind? Warum brauchen Sie eine dritte Art von String? Warum können Sie nicht einfach alle Code- und verwandten Bibliotheken in C++ 11 mit dem neuen String-Typ neu kompilieren und das ganze Chaos vergessen? –
@ChrisBeck: Nehmen wir an, dass es die Methoden von 'std :: string' implementiert. Oder wenn ich bescheidener sein wollte - kann als ein Kartenschlüssel verwendet werden und hat das Equivalent von '.c_str()'. Fadensicherheit kein Muss. – einpoklum
Ich denke, dass alle Möglichkeiten, die Sie erwähnen, Optionen sind? Die Frage enthält nicht genügend Informationen, um einen dieser Fehler zu beseitigen. Sie könnten sicherlich Ihre eigenen Rollen, die als Kartenschlüssel verwendet werden können und '.c_str()' in 5 Minuten oder weniger haben. –