Ugrás a tartalomhoz

std::snprintf

A Wikiszótárból, a nyitott szótárból


Főnév

std::snprintf (tsz. std::snprintfs)

  1. (informatika) A std::snprintf egy C++-ban (és C-ben) használt függvény, amely formázott szöveget ír egy karaktertömbbe, miközben biztosítja, hogy a tömb ne lépje túl a megadott méretet. Ez hasznos lehet például biztonságos string formázásra, hogy elkerüljük a buffer túlcsordulását.

Szintaxis:

#include <cstdio>

int snprintf(char* str, std::size_t size, const char* format, ...);

Paraméterek:

  • str: A célkaraktertömb, ahová az eredmény kerül.
  • size: A str tömb mérete (beleértve a nullterminátort).
  • format: A formázási sztring (hasonló a printf-hez).
  • ...: A formázási karakterekhez tartozó változó számú paraméterek.

Visszatérési érték:

  • Ha a teljes kimenet kisebb, mint size, akkor a kiírt karakterek száma (a nullterminátor nélkül).
  • Ha a teljes kimenet hosszabb, mint size, akkor az írandó karakterek teljes száma (azaz jelzi, hogy a tömb nem volt elég nagy).

Példa:

#include <cstdio>
#include <iostream>

int main() {
    char buffer[20];
    int n = std::snprintf(buffer, sizeof(buffer), "Szám: %d", 42);

    std::cout << "Buffer tartalma: " << buffer << std::endl;
    std::cout << "Karakterek száma: " << n << std::endl;

    return 0;
}

Fontos tudnivalók:

  • Ha a buffer nem elég nagy, az adatok csonkítva lesznek, de a teljes kiírandó méretet visszaadja a függvény.
  • Ha size értéke 0, akkor a snprintf nem ír semmit a bufferbe, de kiszámítja és visszaadja a teljes formázott szöveg hosszát.
  • Biztonságosabb alternatíva lehet a std::stringstream használata modern C++-ban.