Вопрос

Есть ли какая-нибудь лучшая альтернатива для форматирования строк в 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top