table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::vwscanf,std::vfwscanf,std::vswscanf(3) | C++ Standard Libary | std::vwscanf,std::vfwscanf,std::vswscanf(3) | 
NAME¶
std::vwscanf,std::vfwscanf,std::vswscanf - std::vwscanf,std::vfwscanf,std::vswscanf
Synopsis¶
 Defined in header <cwchar>
  
   int vwscanf( const wchar_t* format, std::va_list vlist ); (1)
    (since C++11)
  
   int vfwscanf( std::FILE* stream, const wchar_t* format, (2) (since
    C++11)
  
   std::va_list vlist );
  
   int vswscanf( const wchar_t* buffer, const wchar_t* format, (3)
    (since C++11)
  
   std::va_list vlist );
  
   Reads data from the a variety of sources, interprets it according to format
    and
  
   stores the results into locations defined by vlist.
  
   1) Reads the data from stdin.
  
   2) Reads the data from file stream stream.
  
   3) Reads the data from null-terminated wide string buffer.
Parameters¶
 stream - input file stream to read from
  
   buffer - pointer to a null-terminated wide string to read from
  
   format - pointer to a null-terminated wide string specifying how to read the
    input
  
   vlist - variable argument list containing the receiving arguments.
  
   The format string consists of
  
   * non-whitespace wide characters except %: each such character in the format
  
   string consumes exactly one identical character from the input stream, or
    causes
  
   the function to fail if the next character on the stream does not compare
    equal.
  
   * whitespace characters: any single whitespace character in the format string
  
   consumes all available consecutive whitespace characters from the input
  
   (determined as if by calling iswspace in a loop). Note that there is no
  
   difference between "\n", " ", "\t\t", or other
    whitespace in the format string.
  
   * conversion specifications. Each conversion specification has the following
  
   format:
  
   * introductory % character.
  
   * (optional) assignment-suppressing character *. If this option is present,
    the
  
   function does not assign the result of the conversion to any receiving
    argument.
  
   * (optional) integer number (greater than zero) that specifies maximum field
  
   width, that is, the maximum number of characters that the function is allowed
    to
  
   consume when doing the conversion specified by the current conversion
  
   specification. Note that %s and %[ may lead to buffer overflow if the width
    is
  
   not provided.
  
   * (optional) length modifier that specifies the size of the receiving
    argument,
  
   that is, the actual destination type. This affects the conversion accuracy
    and
  
   overflow rules. The default destination type is different for each conversion
  
   type (see table below).
  
   * conversion format specifier.
  
   The following format specifiers are available:
Conversion Explanation Argument type specifier
  
   hh ll j z t
  
   Length modifier → h (none) l L
  
   (C++11) (C++11) (C++11) (C++11) (C++11)
  
   % Matches literal %. N/A N/A N/A N/A N/A N/A N/A N/A N/A
  
   Matches a character or
  
   a sequence of
  
   characters.
  
   If a width specifier
  
   is used, matches
  
   exactly width wide
  
   c characters (the
  
   argument must be a
  
   pointer to an array
  
   with sufficient room).
  
   Unlike %s and %[, does
  
   not append the null
  
   character to the
  
   array.
  
   Matches a sequence of
  
   non-whitespace
  
   characters (a string).
  
   If width specifier is
  
   used, matches up to
  
   width or until the
  
   first whitespace
  
   s character, whichever
  
   appears first. Always
  
   stores a null
  
   character in addition
  
   to the characters
  
   matched (so the
  
   argument array must
  
   have room for at least
  
   width+1 characters) N/A N/A char* wchar_t* N/A N/A N/A N/A N/A
  
   Matches a non-empty
  
   sequence of character
  
   from set of
  
   characters.
  
   If the first character
  
   of the set is ^, then
  
   all characters not in
  
   the set are matched.
  
   If the set begins with
  
   ] or ^] then the ]
  
   character is also
  
   included into the set.
  
   It is
  
   implementation-defined
  
   [set] whether the character
  
   - in the non-initial
  
   position in the
  
   scanset may be
  
   indicating a range, as
  
   in [0-9]. If width
  
   specifier is used,
  
   matches only up to
  
   width. Always stores a
  
   null character in
  
   addition to the
  
   characters matched (so
  
   the argument array
  
   must have room for at
  
   least width+1
  
   characters)
  
   Matches a decimal
  
   integer.
  
   d The format of the
  
   number is the same as
  
   expected by wcstol
  
   with the value 10 for
  
   the base argument
  
   Matches an integer.
  
   The format of the
  
   number is the same as
  
   i expected by wcstol
  
   with the value 0 for
  
   the base argument
  
   (base is determined by
  
   the first characters
  
   parsed)
  
   Matches an unsigned
  
   decimal integer.
  
   u The format of the
  
   number is the same as
  
   expected by wcstoul signed
  
   with the value 10 for signed signed signed signed long
  
   the base argument. char* or short* int* or long* or long* or intmax_t*
  
   Matches an unsigned unsigned or unsigned unsigned unsigned or size_t*
    ptrdiff_t* N/A
  
   octal integer. char* unsigned int* long* long uintmax_t*
  
   short* long*
  
   o The format of the
  
   number is the same as
  
   expected by wcstoul
  
   with the value 8 for
  
   the base argument
  
   Matches an unsigned
  
   hexadecimal integer.
  
   x, X The format of the
  
   number is the same as
  
   expected by wcstoul
  
   with the value 16 for
  
   the base argument
  
   Returns the number of
  
   characters read so
  
   far.
  
   No input is consumed.
  
   n Does not increment the
  
   assignment count. If
  
   the specifier has
  
   assignment-suppressing
  
   operator defined, the
  
   behavior is undefined
  
   a, Matches a
  
   A(C++11) floating-point number.
  
   e, E N/A N/A float* double* N/A N/A N/A N/A long
  
   f, F The format of the double*
  
   g, G number is the same as
  
   expected by wcstof
  
   Matches implementation
  
   defined character
  
   sequence defining a
  
   pointer.
  
   p N/A N/A void** N/A N/A N/A N/A N/A N/A
  
   printf family of
  
   functions should
  
   produce the same
  
   sequence using %p
  
   format specifier
  
   For every conversion specifier other than n, the longest sequence of input
  
   characters which does not exceed any specified field width and which
    either is
  
   exactly what the conversion specifier expects or is a prefix of a sequence it
    would
  
   expect, is what's consumed from the stream. The first character, if
    any, after this
  
   consumed sequence remains unread. If the consumed sequence has length zero or
    if the
  
   consumed sequence cannot be converted as specified above, the matching
    failure
  
   occurs unless end-of-file, an encoding error, or a read error prevented
    input from
  
   the stream, in which case it is an input failure.
  
   All conversion specifiers other than [, c, and n consume and discard all
    leading
  
   whitespace characters (determined as if by calling iswspace) before
    attempting to
  
   parse the input. These consumed characters do not count towards the specified
  
   maximum field width.
  
   If the length specifier l is not used, the conversion specifiers c, s, and [
    perform
  
   wide-to-multibyte character conversion as if by calling wcrtomb with an
    mbstate_t
  
   object initialized to zero before the first character is converted.
  
   The conversion specifiers s and [ always store the null terminator in
    addition to
  
   the matched characters. The size of the destination array must be at least
    one
  
   greater than the specified field width. The use of %s or %[, without
    specifying the
  
   destination array size, is as unsafe as std::gets.
  
   The correct conversion specifications for the fixed-width integer types
    (int8_t,
  
   etc) are defined in the header <cinttypes> (although SCNdMAX, SCNuMAX,
    etc is
  
   synonymous with %jd, %ju, etc).
  
   There is a sequence point after the action of each conversion specifier; this
  
   permits storing multiple fields in the same "sink" variable.
  
   When parsing an incomplete floating-point value that ends in the exponent
    with no
  
   digits, such as parsing "100er" with the conversion specifier %f,
    the sequence
  
   "100e" (the longest prefix of a possibly valid floating-point
    number) is consumed,
  
   resulting in a matching error (the consumed sequence cannot be converted to a
  
   floating-point number), with "r" remaining. Some existing
    implementations do not
  
   follow this rule and roll back to consume only "100", leaving
    "er", e.g. glibc bug
  
   1765.
Return value¶
Number of arguments successfully read, or EOF if failure occurs.
Example¶
 This section is incomplete
  
   Reason: no example
See also¶
 wscanf reads formatted wide character input from stdin, a file
    stream or a buffer
  
   fwscanf (function)
  
   swscanf
  
   C documentation for
  
   vwscanf,
  
   vfwscanf,
  
   vswscanf
Category:¶
* Todo no example
| 2024.06.10 | http://cppreference.com |