代码之家  ›  专栏  ›  技术社区  ›  Anne Quinn

确定vsprintf输出的大小

  •  0
  • Anne Quinn  · 技术社区  · 7 年前

    printf(const char * format, ...) format 以及 va_list vsprintf()

    有没有一个函数可以 格式 VAU列表 要生成输出的确切长度?

    1 回复  |  直到 7 年前
        1
  •  5
  •   πάντα ῥεῖ    7 年前

    example in the documentation ,您可以首先确定所需的缓冲区大小(重点):

    std::vector<char> buf(1+std::vsnprintf(NULL, 0, fmt, args1)); // <<<
    va_end(args1);
    std::vsnprintf(buf.data(), buf.size(), fmt, args2);
    

    缓冲区可以是空指针,但是返回值(将被写入的字节数,不包括空终止符)仍然被计算和返回 .

    <x>sprintf() 如果目标缓冲区参数作为 NULL nullptr