Is it possible in C++ to use format specifiers in a custom function? Like as in the printf() statement, and how you can use e.g. '%d' to insert an int variable:
printf("The number is %d", num);
But is there a way I can do this with my own function, in C++? Like this:
void output(std::string message)
{
std::cout << message << '\n';
}
int main()
{
int num = 123;
output("The number is %d", num);
return 0;
}
I tried searching it up, but couldn't really find any result stating that this is possible, so it probably isn't.
I did see something with three dots in a function parameter, a variadic function, but I couldn't figure out if that was what I'm searching for.
Edit: I feel a little bad, maybe I could've just found it with searching a bit better (I didn't know variadic functions were the way to go). See https://en.cppreference.com/w/cpp/utility/variadic. I'm sorry for that.
You are correct, the "three dots" parameter is what you need. You can use vprintf
:
#include <iostream>
#include <cstdarg> // For va_list, va_start, va_end
#include <cstdio> // For vprintf
void output(const char* format, ...) {
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
int main() {
int a = 123;
output("The number is %d %d\n", a, 456);
return 0;
}
If you're using C++20 or higher, you can also look at std::format
for modern and type-safe placeholding.