C++ 根据值查找特定参数
我目前正在尝试创建一个切换系统,在这里我有一堆可能的选项和一个值,我输入所有这些可能的选项作为参数,然后得到所需的一个。这就是我迄今为止所尝试的:C++ 根据值查找特定参数,c++,C++,我目前正在尝试创建一个切换系统,在这里我有一堆可能的选项和一个值,我输入所有这些可能的选项作为参数,然后得到所需的一个。这就是我迄今为止所尝试的: void Toggle(int scroll, int &state, int maxV, ...) { state++; if (state >= maxV) state = 0; char *char_State = ""; va_list argptr; va_star
void Toggle(int scroll, int &state, int maxV, ...)
{
state++;
if (state >= maxV)
state = 0;
char *char_State = "";
va_list argptr;
va_start(argptr, maxV);
for (int i = 0; i < maxV; i++)
{
if (i == state)
char_State = va_arg(argptr, char*);
}
va_end(argptr);
printf("State: %s\n", char_State);
}
但由于某种原因,在运行上面的代码时,我得到了以下结果:
State: Option 1
StateNum: 1
State: Option 1
StateNum: 2
State: Option 1
StateNum: 0
State: Option 1
StateNum: 1
知道我做错了什么吗?由于这是我第一次与va合作,因此非常感谢您的帮助 每次输入toggle()
时,应为所有3个参数调用va_arg()
,或至少为每个选项调用,直到找到正确的选项为止。这是因为在内部,va_列表只是堆栈上的一个数据数组(在您的例子中是指针),您必须使用va_arg检查它们,直到找到所需的数据
void Toggle(int scroll, int &state, int maxV, ...)
{
state++;
if (state >= maxV)
state = 0;
char *char_State = "";
va_list argptr;
va_start(argptr, maxV);
for (int i = 0; i < maxV; i++)
{
char* p = va_arg(argptr, char*);
if (i == state)
char_State = p;
}
va_end(argptr);
printf("State: %s\n", char_State);
}
void切换(int-scroll、int&state、int-maxV等)
{
状态++;
如果(状态>=maxV)
状态=0;
char*char_State=“”;
va_列表参数;
va_启动(argptr,maxV);
对于(int i=0;itoggle()
时,应为所有3个参数调用va_arg()
,或至少为每个选项调用,直到找到正确的选项为止。这是因为在内部,va_列表只是堆栈上的一个数据数组(在您的例子中是指针),您必须使用va_arg检查它们,直到找到所需的数据
void Toggle(int scroll, int &state, int maxV, ...)
{
state++;
if (state >= maxV)
state = 0;
char *char_State = "";
va_list argptr;
va_start(argptr, maxV);
for (int i = 0; i < maxV; i++)
{
char* p = va_arg(argptr, char*);
if (i == state)
char_State = p;
}
va_end(argptr);
printf("State: %s\n", char_State);
}
void切换(int-scroll、int&state、int-maxV等)
{
状态++;
如果(状态>=maxV)
状态=0;
char*char_State=“”;
va_列表参数;
va_启动(argptr,maxV);
对于(int i=0;i