📜  C++ vsscanf()(1)

📅  最后修改于: 2023-12-03 15:29:51.757000             🧑  作者: Mango

C++的vsscanf()函数

简介

vsscanf()是C++标准库中提供的一个函数,它可以从字符串中读取格式化输入,并将读取到的数据按照指定的类型存储到指定的变量中。

该函数是printf()和scanf()函数之间的一个比较。printf()将变量转换为字符串并输出到标准输出流中,而vsscanf()从字符串中读取格式化输入并将结果存储到变量中。

语法

vsscanf()函数的语法如下所示:

int vsscanf(const char * str, const char * format, va_list arg );
  • str:一个指向输入字符序列的指针。
  • format:一个指向字符串格式的指针。
  • arg:一个指向用于存储读取数据的变量的列表。
示例
#include <cstdio>
#include <cstdarg>

int main() {
  char str[] = "hello 1234";

  char s[10];
  int i;

  // 读取字符串和整数
  std::sscanf(str, "%s %d", s, &i);

  std::printf("Read string %s and integer %d \n", s, i);

  return 0;
}

输出:

Read string hello and integer 1234
注意事项
  • 与scanf()一样,vsscanf()遇到空格、制表符或换行符时,会自动停止读取。
  • 如果读取到的数据类型有误,将会导致未定义的行为。
  • 使用到了va_list结构体,因为函数的参数数目是可变的,需要用va_list来处理。因此,在使用时要引入<stdarg.h>头文件。
  • vsscanf()函数是不安全的,应该使用更安全的函数,如sscanf_s()、fscanf_s()等。