Для различных (связанных с C++ 11 std :: string-change) причин я хотел бы использовать строку non-std :: string в некоторых местах моего 11-иго кода C++, который должен быть согласен с несколькими версиями нескольких компиляторов C++.Портативный, std :: string-подобный строковый класс, который не является std :: string
Теперь я не против, работают ли мои строки в режиме pre-C++ 11 или post-C++ 11; и я не забочусь о производительности. Я просто хочу хороший надежный класс строк, который ни при каких обстоятельствах не дает мне ошибок, связанных с std::__cxx11::string
и другими такими вуду.
Какие у меня варианты? Могу ли я/должен ли я реплицировать реализацию одного компилятора в свои собственные файлы заголовков? Является ли опция vstring в GCC? Что-то другое?
Что квалифицируется как «строка-как»? Вы говорите, что вас не волнуют различия - часть причины, по которой C++ 11 внес изменения, заключается в том, что новая версия намного более потокобезопасна. Можете ли вы уточнить, что именно вы конкретно хотите? Вы просто хотите, чтобы он был конвертируемым в оба типа строк? Почему вы не можете просто конвертировать между двумя типами в любых границах, подходящих в вашем проекте, зачем вам нужен третий тип строки. Почему вы не можете просто перекомпилировать весь код и связанные библиотеки на C++ 11 с использованием нового типа строк и забыть весь беспорядок. –
@ChrisBeck: Предположим, что он реализует методы 'std :: string'. Или, если бы я хотел быть более скромным, можно использовать в качестве ключа карты и иметь равноценность '.c_str()'. Защита резьбы не обязательна. – einpoklum
Я думаю, что все возможности, о которых вы говорите, - это варианты? Вопрос не содержит достаточно информации, чтобы исключить любой из них afaict. Вы могли бы сыграть свою роль, которая может использоваться в качестве ключа карты и имеет '.c_str()' через 5 минут или меньше. –