我如何确定最后一个变量参数
How do I identify the last variable argument?
所以在我的函数中,我想要一个可变数量的char指针
void myFunction(char *_Name, ...);
只有当我遍历参数时,我的代码会中断,因为我不确定如何在传递的最后一个参数上停止,而不是继续前进。void myClass::myFunction(char *_Name, ...)
{
char *a;
std::vector<char*> names;
va_list VariablePathList;
va_start (VariablePathList, _Name);
a = _Name;
bool exitLoop = false;
while(!exitLoop)
{
names.emplace_back(a);
a = va_arg(VariablePathList, char *);
//what must I do to set "exitLoop = true" at the right time?
}
va_end (VariablePathList);
}
假设我将两个char指针传递给myFunction,那么当va_arg调用不可读内存时,代码在第三个循环时中断。
不告诉myFunction我给了它多少个参数,它怎么能在代码中断之前找到设置exitLoop的数字?
我似乎找不到关于printf()之类的方法是如何做到这一点的直接信息,所以可能存在我所追求的解决方案。
真的,提前谢谢你。
printf
通过解析格式字符串来完成。其他一些函数通过在变量之前接受显式的count
参数来实现。选择哪条路取决于你的具体需要。
实际上,现在是2015年了,所以你应该使用可变模板,而不是古老的C习惯。我也绝对不建议将char*
储存在容器中。
这里是你需要的:
#include <vector>
#include <string>
template <typename... T>
void foo(T... args)
{
std::vector<std::string> names{args...};
// now use `names`
}
(现场演示)
相关文章:
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 带有整数的变量参数列表
- 转发变量参数列表以模拟 std::thread
- 存储稍后要转发的变量参数
- 包括一个类来定义全局变量参数 c++ :(
- 可变参数模板类的构造函数无法接受变量参数
- 变量参数列表 后面的'const std::string&'弄乱了堆栈
- 变量参数崩溃的 C 函数
- 如何使用变量参数化类型?C++
- 使用参数包分配具有变量参数的函数指针
- 参考变量参数与本地参考变量
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 如何基于模板变量参数多次扩展语句
- gmock一种接受变量参数的方法
- 使用变量参数列表与向量(C )的原因
- lambda 中的变量参数作为函数指针
- C 变量参数错误
- 带有变量参数列表的c++11 lambda函数
- 变量参数
- std::函数带有C变量参数,而不是模板变量参数