Альтернатива CString::Format?
Вопрос
Есть ли какая-нибудь лучшая альтернатива для форматирования строк в VC6 с проверкой синтаксиса перед подстановкой?
Решение
CString
предлагает Format
способ получения printf
-форматирование в стиле, но это небезопасно для типов.
Для типобезопасного форматирования строк вы могли бы либо использовать std::stringstream
/ std::wstringstream
или тот Формат повышения библиотека, хотя они оба работают с C ++ std::basic_string
шаблон класса, а не MFC CString
класс.Я успешно использовал оба этих метода в VC6.
Формат Boost хорош тем, что позволяет вам использовать printf
-подобный синтаксис и выдаст исключение, если предоставленные вами аргументы не соответствуют строке формата, тогда как форматирование строк с помощью C ++ iostreams, как правило, делает ваш код довольно подробным.
Обратите внимание, что вы можете создать CString
объект из std::string
следующим образом:
std::string s;
CString str( s.c_str() );
Я надеюсь, что это поможет!
Другие советы
Проверьте Быстрый формат.Он имеет простой синтаксис и терминологию "приемника" - FastFormat для объекта, который получает результат операции форматирования - для CString.
Что-то вроде:
int i = 1;
std::string ss = "a std string";
CString cs = "a Cstring";
CString result;
fastformat::fmt(result, "i={0}, ss={1}, cs={2}", i, ss, cs);
FormatString - интеллектуальное форматирование строк
Автор : Иво Бельчев
Опубликовано на CodeProject