std:: vscanf, std:: vfscanf, std:: vsscanf
|
ヘッダーで定義
<cstdio>
|
||
|
int
vscanf
(
const
char
*
format, std
::
va_list
vlist
)
;
|
(1) | (C++11以降) |
|
int
vfscanf
(
std::
FILE
*
stream,
const
char
*
format, std
::
va_list
vlist
)
;
|
(2) | (C++11以降) |
|
int
vsscanf
(
const
char
*
buffer,
const
char
*
format, std
::
va_list
vlist
)
;
|
(3) | (C++11以降) |
様々なソースからデータを読み取り、 format に従って解釈し、結果を vlist で定義された場所に格納します。
目次パラメータ
以下のフォーマット指定子が利用可能である:
戻り値正常に読み取られた引数の数、または EOF エラーが発生した場合。 注記
これらの関数はすべて少なくとも1回
va_arg
を呼び出し、戻り値の後では
例
このコードを実行
#include <cstdarg> #include <cstdio> #include <iostream> #include <stdexcept> void checked_sscanf(int count, const char* buf, const char *fmt, ...) { std::va_list ap; va_start(ap, fmt); if (std::vsscanf(buf, fmt, ap) != count) throw std::runtime_error("parsing error"); va_end(ap); } int main() { try { int n, m; std::cout << "Parsing '1 2'... "; checked_sscanf(2, "1 2", "%d %d", &n, &m); std::cout << "success\n"; std::cout << "Parsing '1 a'... "; checked_sscanf(2, "1 a", "%d %d", &n, &m); std::cout << "success\n"; } catch (const std::exception& e) { std::cout << e.what() << '\n'; } } 出力: Parsing '1 2'... success Parsing '1 a'... parsing error 関連項目
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||