Привет всем!Я пытаюсь сделать простую копию sprintf, которая возвращает отформатированную строку, но я попадаю в маленькую загвоздку ...
Видимо, используя список аргументов переменной длины, вы не можете передать std ::экземпляр строки.
У меня уже есть синтаксический анализатор, работающий должным образом с int, double, float, char, const char *, char * ... Мне еще предстоит заставить работать строки.: \
Если вам интересно, я получаю ошибку компиляции: /root/learncpp/StringFormat/main.cpp:8: warning: cannot pass objects of non-POD type 'struct std::string' through '...'; call will abort at runtime
Основная причина, по которой я это делаю, заключается в том, что я могу иметь удобное форматирование без необходимостиполагаться на сторонние библиотеки, но при этом не нужно добавлять ".c_str ()" к каждому экземпляру строки, который я использую.
Помощь в этом будет приветствоваться.Возможно, существует другая версия списков аргументов переменной длины, созданных специально для C ++?
РЕДАКТИРОВАТЬ: я только что понял, если вы передаете указатель на строку (то есть с использованием префикса &), он работает хорошо.Все, что вам нужно сделать, это разыменовать строковый указатель в пользовательском sprintf, передавая адрес std :: string!
Тем не менее, было бы неплохо увидеть, есть ли способ поддержать строку непосредственно через переменнуюсписки аргументовСпасибо!