gpt4 book ai didi

c++ - 使用可变参数函数 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:47:12 27 4
gpt4 key购买 nike

我在我的一个程序中使用可变参数函数。这是它的定义 -

std::string GetMessage(const char *format,...)

现在我想为用户提供额外的可行性,以提供他想要的纯字符串。喜欢 - GetMessage("这是我的消息")

我在处理此类输入时遇到问题,带有变量的输入工作正常。

我试过

val_list vl;
va_start(vl,format);

if(strlen(vl) > 1) // TO check if va list has any arguments.

但它的行为非常不一致。

所以有人可以建议我更好的方法来了解可变参数函数是否有参数或没有参数?

最佳答案

调用者必须主动传递一些值,让被调用的 var/stdarg-using 函数知道参数在哪里结束。常用技术包括:

  • 传递标记值,例如尾随 NULL
  • 通过计数
  • 传递一个格式字符串,其中嵌入的内容(例如 % - printf() 等的前缀格式)暗示了所需的参数数量

您有时可以通过注入(inject)哨兵的宏来调用可变参数函数,从而促进可靠地使用它们,并且一些编译器允许您搭载它们的 printf() 样式参数检查(例如 GCC) .

关于c++ - 使用可变参数函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561695/

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