gpt4 book ai didi

c++ - 在 C++ 中接受不同数据类型的变量参数的函数

转载 作者:行者123 更新时间:2023-11-30 04:31:08 24 4
gpt4 key购买 nike

我一直在 stackoverflow 中搜索这个,但我无法理解提出的大多数解决方案。问题是我需要编写一个可以接受任何数据类型的函数,并且函数的参数数量也各不相同。现在我只想在函数中打印这些参数。

void printVariableArgs(){
//print all variables that are passed to this function
}

是否可以在 C++ 中执行此操作,如果可以,它是如何完成的?

最佳答案

C++11 有 variadic templates .

这是使用它们的 printf 示例:

void printf(const char *s)
{
while (*s) {
if (*s == '%' && *(++s) != '%')
throw std::runtime_error("invalid format string: missing arguments");
std::cout << *s++;
}
}

template<typename T, typename... Args>
void printf(const char *s, T value, Args... args)
{
while (*s) {
if (*s == '%' && *(++s) != '%') {
std::cout << value;
++s;
printf(s, args...); // call even when *s == 0 to detect extra arguments
return;
}
std::cout << *s++;
}
throw std::logic_error("extra arguments provided to printf");
}

您总是可以直接使用 printf。

还有stdarg.h对于变量参数:

/* print all non-negative args one at a time;
all args are assumed to be of int type */
void printargs(int arg1, ...)
{
va_list ap;
int i;

va_start(ap, arg1);
for (i = arg1; i >= 0; i = va_arg(ap, int))
printf("%d ", i);
va_end(ap);
putchar('\n');
}

关于c++ - 在 C++ 中接受不同数据类型的变量参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com