gpt4 book ai didi

c++ - 错误的 vsnprintf 输出

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

我有以下功能:

void raiseError(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list

int size = vsnprintf(nullptr, 0, msg, ap);
std::vector<char> s(size+1, 0);
vsnprintf(s.data(), size, msg, ap);
va_end(ap);
errorString = std::string(s.data()));
}

当我打电话

raiseError("File not found in <%s> : <%s>", "a", "b" );

第一个 vsnprintf 调用(计算最终字符串大小)返回正确值 27。但最终字符串是:

“在 <**A*> 中找不到文件:”

“*”字符在程序启动时随机出现。

此外,该程序在 MinGW 中运行,该问题仅在 linux gcc 中出现。

我的代码有什么问题?

最佳答案

你不能多次使用 ap。考虑使用 va_copy。

关于c++ - 错误的 vsnprintf 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419997/

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