Альтернатива CString :: Format? - PullRequest
3 голосов
/ 01 января 2009

Есть ли лучшая альтернатива для форматирования строк в VC6 с проверкой синтаксиса перед заменой?

Ответы [ 3 ]

10 голосов
/ 01 января 2009

CString предлагает метод Format для форматирования в стиле printf, но это не безопасно для типов.

Для безопасного строкового форматирования вы можете использовать библиотеку std::stringstream / std::wstringstream или Boost Format , хотя обе они работают с шаблоном класса C ++ std::basic_string, а не с MFC CString класс. Я успешно использовал оба из них в VC6.

Boost Format удобен тем, что позволяет вам использовать printf -подобный синтаксис и будет выдавать исключение, если введенные вами аргументы не соответствуют строке формата, тогда как форматирование строки с помощью Cost iostreams делает ваш код вполне многословный.

Обратите внимание, что вы можете создать CString объект из std::string следующим образом:

std::string s;
CString str( s.c_str() );

Надеюсь, это поможет!

1 голос
/ 10 мая 2009

Проверить FastFormat . Он имеет простой синтаксис и «приемник» - терминология 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);
0 голосов
/ 24 февраля 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...