Выбор ответа Middle Современный C++20/23 обновлено
Чем std::format лучше printf
Вопрос
Главное преимущество std::format перед printf:
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Типобезопасность: строка формата проверяется при компиляции. std::format("{} {:.2f}", name, price) знает типы аргументов, а строка формата проверяется при компиляции (через consteval-конструктор formatstring): несовпадение спецификатора с типом станет ошибкой компиляции, а не UB как у printf("%d",…
Варианты ответа
- Он всегда быстрее любых альтернатив, включая
printfи потоки - Он выводит текст сразу на экран, минуя буферизацию
stdout - Типобезопасность: строка формата проверяется при компиляцииправильный ответ
- Он не использует строки формата, аргументы просто склеиваются
Разбор
std::format("{} {:.2f}", name, price) знает типы аргументов, а строка формата проверяется при компиляции (через consteval-конструктор format_string): несовпадение спецификатора с типом станет ошибкой компиляции, а не UB как у printf("%d", 3.5). Для своих типов пишется специализация std::formatter.
- Скорость хорошая, но «всегда быстрее» неверно.
std::formatвозвращаетstd::string; печатает сразуstd::printиз C++23.- Строки формата как раз используются.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.