GeezerVison is showing cpprefjp.github.io — std::vsnprintf - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月08日 16時16分41秒 (JST)
Akira Takahashi
が更新
履歴
編集
function
<cstdio>
std:: vsnprintf (C++11)
namespace std {
int vsnprintf ( char * buffer , size_t n , const char * format , va_list arg );
}
概要
可変引数リストva_listを使用し、書式と文字数の上限を指定して文字列領域に出力する。
引数を...で受け取るsnprintf() と異なり、va_list としてまとめられた可変引数を受け取る。可変引数を受け取る自作の関数から、書式付き出力を行いたい場合に使用する。
戻り値
snprintf() と同じ。
備考
この関数はva_end マクロを呼び出さないため、呼び出し側でargに対してva_endを実行する必要がある
例
#include <cstdio>
#include <cstdarg>
// 可変引数を受け取り、書式付きで出力する関数
void log_message ( const char * format , ...)
{
char buffer [ 64 ];
std::va_list args ;
va_start ( args , format );
std::vsnprintf ( buffer , sizeof ( buffer ), format , args );
va_end ( args );
std::printf ( "%s" , buffer );
}
int main ()
{
log_message ( "%s: %d \n " , "count" , 42 );
}
出力
count: 42
処理系
備考
動作確認した範囲での最小バージョンを記載している。Clangは3.4(Compiler Explorerで利用できる最古のバージョン)、Visual C++は2019(同左)で動作を確認しており、それ以前のバージョンでも使用できる可能性がある
関連項目