namespace std {
int sscanf(const char* buffer, const char* format, ...);
}
概要
書式を指定して文字列領域から入力する。
bufferが指すヌル終端文字列を入力元として、fscanf()と同じ規則で解析を行う。
戻り値
代入に成功した項目の数を返す。最初の変換が行われる前に入力が終端に達した場合はEOFを返す。
備考
%sや%[による文字列の読み込みでは、書き込み先の大きさが考慮されない。書式指定に最大フィールド幅(%31sなど)を指定しない場合、バッファオーバーランを起こしうる- 数値の解析には、
std::from_chars()(C++17)やstd::stoi()(C++11)などの、より安全な代替手段がある
例
#include <cstdio>
int main()
{
const char* input = "2026-09-08";
int year = 0;
int month = 0;
int day = 0;
int count = std::sscanf(input, "%d-%d-%d", &year, &month, &day);
std::printf("%d: %d/%d/%d\n", count, year, month, day);
}
出力
3: 2026/9/8