How to use variadic function that get different type of numbers in C++

1 Answer

0 votes
#include <iostream>
#include <cstdarg>

void PrintMix(const char* fmt...) {
    va_list args;
    va_start(args, fmt);

    while (*fmt != '\0') {
        if (*fmt == 'd') {
            int i = va_arg(args, int);
            std::cout << i << '\n';
        } else if (*fmt == 'c') {
            char ch = va_arg(args, int);
            std::cout << ch << "\n"; 
        } else if (*fmt == 'f') {
            double d = va_arg(args, double);
            std::cout << d << '\n';
        } else if (*fmt == 's') {
            char *s = va_arg(args, char *);
            std::cout << s << '\n';
        }
        fmt++;
    }

    va_end(args);
}

int main() {
    PrintMix("fdcfs", 3.14, 2347, 'z', 45.837, "c++"); 
}




/*
run:

3.14
2347
z
45.837
c++

*/

 



answered Dec 7, 2022 by avibootz
edited Dec 7, 2022 by avibootz
...