gpt4 book ai didi

C++将字符串传递给varargs

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

#define LOG(format,...) Logger::Log(format,__VA_ARGS__)
#define STRIP(netIp) GeneralUtils::inet_ntop_(netIp)
string GeneralUtils::inet_ntop_(unsigned int netIp){
char strIP[INET_ADDRSTRLEN];
in_addr sin_addr;
sin_addr.s_addr = netIp;
inet_ntop(AF_INET, &sin_addr.s_addr, strIP, sizeof strIP);
return string(strIP);
}

调用时:

LOG("src %s dst %s" ,STRIP(src_ip_));

我得到编译错误:

cannot pass objects of non-trivially-copyable type ‘std::string {aka struct std::basic_string<char>}’ through ‘...’

我知道可变参数是 c 兼容的,所以我不能向它发送字符串。有没有简单的方法可以绕过它?像这样修复它是否正确:

#define STRIP(netIp) GeneralUtils::inet_ntop_(netIp).data()

最佳答案

您可以传递 const char * 而不是 std::string。您可以通过调用 c_str()

std::string 获取它

关于C++将字符串传递给varargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516631/

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