Создание моей собственной функции printf? - PullRequest
2 голосов
/ 27 декабря 2010

Мне было интересно, как я мог это сделать. Я в основном озадачен частью N аргументов:

printf("Hello, I'm %i years old and my mom is %i .",me.age(),mom.age());

Я хочу создать функцию, которая будет принимать отформатированную строку, подобную этой, и возвращать стандартную строку.

Как выполняется N аргументов?

1 Ответ

10 голосов
/ 27 декабря 2010

printf - переменная функция;Вы можете реализовать свои собственные функции с переменными числами, используя возможности, предоставляемые <stdarg.h>.

. В C ++ следует избегать функций с переменными числами, где это возможно.Они весьма ограничены в том, какие типы они могут принимать в качестве аргументов, и они не являются безопасными типами.C ++ 0x добавляет шаблоны переменных в C ++;как только поддержка этой функции станет широко распространенной, вы сможете писать безопасные переменные функции типа.

А пока лучше всего использовать какой-то другой безопасный метод. Boost.Format , например, перегружает оператор % для выполнения форматирования.

...