std::wscanf, std::fwscanf, std::swscanf
Определён в заголовочном файле <cwchar> | ||
|---|---|---|
int wscanf( const wchar_t* format, ... ); | (1) | |
int fwscanf( std::FILE* stream, const wchar_t* format, ... ); | (2) | |
int swscanf( const wchar_t* buffer, const wchar_t* format, ... ); | (3) |
Считывает данные из различных источников, интерпретирует их согласно format и сохраняет результаты в заданных местах.
stdin.stream.buffer.Параметры
| stream | - | входной файловый поток для чтения |
| buffer | - | указатель на завершающуюся нулём широкострочную строку для чтения |
| format | - | указатель на завершающуюся нулём широкострочную строку, задающую способ чтения входных данных |
| ... | - | принимающие аргументы. |
Строка format состоит из
- не являющихся пробельными широких символов, кроме
%: каждый такой символ в строке формата считывает из входного потока ровно один идентичный символ или приводит к сбою функции, если следующий символ в потоке не равен ему. - пробельных символов: любой одиночный пробельный символ в строке формата считывает из входных данных все доступные идущие подряд пробельные символы (определяется так, как если бы
std::iswspaceвызывалась в цикле). Обратите внимание, что между"\n"," ","\t\t"и другими пробельными символами в строке формата нет различий. - спецификаторов преобразования. Каждый спецификатор преобразования имеет следующий формат:
- вводный символ
%. -
(необязательно) символ подавления присваивания
*. Если этот параметр указан, функция не присваивает результат преобразования ни одному принимающему аргументу. -
(необязательно) целое число (больше нуля), задающее максимальную ширину поля, то есть максимальное количество символов, которое функция может считать при выполнении преобразования, заданного текущим спецификатором преобразования. Обратите внимание, что
%sи%[могут привести к переполнению буфера, если ширина не указана. - (необязательно) модификатор длины, задающий размер принимающего аргумента, то есть фактический тип назначения. Он влияет на точность преобразования и правила переполнения. Тип назначения по умолчанию различается для каждого типа преобразования (см. таблицу ниже).
- спецификатор формата преобразования.
Доступны следующие спецификаторы формата:
| Спецификатор преобразования | Описание | Ожидаемый тип аргумента |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Модификатор длины→ |
hh |
h | нет |
l |
ll |
j |
z |
t |
L |
|
| Доступно только начиная с C++11→ | Да | Да | Да | Да | Да | |||||
% | Совпадает с литеральным символом %. | Н/П | Н/П | Н/П | Н/П | Н/П | Н/П | Н/П | Н/П | Н/П |
c | Совпадает с символом или последовательностью символов.
| Н/П | Н/П |
char*
|
wchar_t*
| Н/П | Н/П | Н/П | Н/П | Н/П |
s | Совпадает с последовательностью непробельных символов (строкой).
|
|||||||||
[set ] | Совпадает с непустой последовательностью символов из набора символов set.
|
|||||||||
d | Совпадает с десятичным целым числом.
|
signedchar* or unsignedchar*
|
signedshort* or unsignedshort*
|
signedint* or unsignedint*
|
signedlong* or unsignedlong*
|
signedlonglong* or unsignedlonglong*
|
std::intmax_t* or std::uintmax_t*
|
std::size_t*
|
std::ptrdiff_t*
| Н/П |
b (C++26) | Совпадает с беззнаковым двоичным целым числом.
|
|||||||||
i | Совпадает с целым числом.
|
|||||||||
u | Совпадает с беззнаковым десятичным целым числом.
|
|||||||||
o | Совпадает с беззнаковым восьмеричным целым числом.
|
|||||||||
xX | Совпадает с беззнаковым шестнадцатеричным целым числом.
|
|||||||||
n | Возвращает количество прочитанных на данный момент символов.
|
|||||||||
a (C++11)A (C++11)eEfF (C++11)gG | Совпадает с числом с плавающей точкой.
| Н/П | Н/П |
float*
|
double*
| Н/П | Н/П | Н/П | Н/П |
longdouble*
|
p | Совпадает с определяемой реализацией последовательностью символов, представляющей указатель.
| Н/П | Н/П |
void**
| Н/П | Н/П | Н/П | Н/П | Н/П | Н/П |
| Примечания | ||||||||||
| Для каждого спецификатора преобразования, кроме За исключением спецификатора Все спецификаторы преобразования, кроме Если модификатор длины Спецификаторы преобразования Правильные спецификаторы преобразования для целочисленных типов фиксированной ширины ( После выполнения каждого спецификатора преобразования имеется точка последовательности; это позволяет сохранять несколько полей в одной и той же переменной-приёмнике. При разборе неполного значения с плавающей точкой, заканчивающегося экспонентой без цифр, например при разборе Если спецификация преобразования недопустима, поведение не определено. |
||||||||||
Возвращаемое значение
Количество успешно прочитанных аргументов или EOF, если сбой произошёл до присваивания значения первому принимающему аргументу.
Пример
См. также
|
(C++11)(C++11)(C++11) | считывают форматированный ввод широких символов из stdin, файлового потокаили буфера с использованием списка аргументов переменной длины (функция) |
Документация по C для wscanf, fwscanf, swscanf |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/c/fwscanf