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 若发生失败情况。 注释
所有这些函数至少调用一次
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 另请参阅
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||