std::basic_istream<CharT,Traits>:: operator>>
|
basic_istream
&
operator
>>
(
unsigned
short
&
value
)
;
|
(1) | |
|
basic_istream
&
operator
>>
(
unsigned
int
&
value
)
;
|
(2) | |
|
basic_istream
&
operator
>>
(
long
&
value
)
;
|
(3) | |
|
basic_istream
&
operator
>>
(
unsigned
long
&
value
)
;
|
(4) | |
|
basic_istream
&
operator
>>
(
long
long
&
value
)
;
|
(5) | (начиная с C++11) |
|
basic_istream
&
operator
>>
(
unsigned
long
long
&
value
)
;
|
(6) | (начиная с C++11) |
|
basic_istream
&
operator
>>
(
float
&
value
)
;
|
(7) | |
|
basic_istream
&
operator
>>
(
double
&
value
)
;
|
(8) | |
|
basic_istream
&
operator
>>
(
long
double
&
value
)
;
|
(9) | |
|
basic_istream
&
operator
>>
(
bool
&
value
)
;
|
(10) | |
|
basic_istream
&
operator
>>
(
void
*
&
value
)
;
|
(11) | |
|
basic_istream
&
operator
>>
(
short
&
value
)
;
|
(12) | |
|
basic_istream
&
operator
>>
(
int
&
value
)
;
|
(13) | |
|
basic_istream
&
operator
>>
(
/* extended-floating-point-type */
&
value
)
;
|
(14) | (начиная с C++23) |
|
basic_istream
&
operator
>>
(
std::
ios_base
&
(
*
func
)
(
std::
ios_base
&
)
)
;
|
(15) | |
|
basic_istream
&
operator
>>
(
std::
basic_ios
<
CharT, Traits
>
&
( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ; |
(16) | |
|
basic_istream
&
operator
>>
(
basic_istream
&
(
*
func
)
(
basic_istream
&
)
)
;
|
(17) | |
|
`, `
`, `
` с классами)
- C++ синтаксиса (`basic_istream`, `operator >>`, `func`, `&`, `*`, `;`)
- Символов и скобок
- Номера версии "(17)"
Все эти элементы сохраняются в оригинальном виде без изменений.
|
||
|
basic_istream
&
operator
>>
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(18) | |
Извлекает значения из входного потока.
-
Если
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
, устанавливает
failbitи сохраняет std:: numeric_limits < short > :: min ( ) в val . -
Иначе, если
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
, устанавливает
failbitи сохраняет std:: numeric_limits < short > :: max ( ) в val . - Иначе, сохраняет static_cast < short > ( lval ) в val .
-
Если
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
, устанавливает
failbitи сохраняет std:: numeric_limits < int > :: min ( ) в val . -
Иначе, если
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
, устанавливает
failbitи сохраняет std:: numeric_limits < int > :: max ( ) в val . - Иначе, сохраняет static_cast < int > ( lval ) в val .
FP
следующим образом:
-
Если
ранг преобразования с плавающей точкой
для
/* extended-floating-point-type */
меньше или равен рангу для
float
, то
FPявляется float . -
Иначе, если ранг преобразования с плавающей точкой для
/* extended-floating-point-type */
меньше или равен рангу для
double
, то
FPявляется double . -
Иначе,
FPявляется long double .
FP
fval
путем вызова
std::num_get::get()
. После этого:
-
Если
fval
<
-
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
, устанавливает
failbitи сохраняет - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) в val . -
В противном случае, если
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
<
fval
, устанавливает
failbitи сохраняет std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) в val . - В противном случае сохраняет static_cast < /* extended-floating-point-type */ > ( fval ) в val .
-
- возникает конец файла во входной последовательности;
- вставка в выходную последовательность завершается неудачей (в этом случае символ для вставки не извлекается);
-
возникает исключение (в этом случае исключение перехватывается и повторно выбрасывается только если не было вставлено ни одного символа и
failbitустановлен вexceptions()).
Если извлечение завершается неудачей (например, если введена буква там, где ожидается цифра), в
value
записывается ноль и устанавливается
failbit
. Для знаковых целых чисел, если результат извлечения превышает максимальное или минимальное значение, которое может вместить
value
, записывается
std::
numeric_limits
<
T
>
::
max
(
)
или
std::
numeric_limits
<
T
>
::
min
(
)
(соответственно) и устанавливается флаг
failbit
. Для беззнаковых целых чисел, если результат извлечения превышает максимальное или минимальное значение, которое может вместить
value
, записывается
std::
numeric_limits
<
T
>
::
max
(
)
и устанавливается флаг
failbit
.
Содержание |
Параметры
| value | - | ссылка на целочисленное или число с плавающей точкой для сохранения извлеченного значения |
| func | - | указатель на функцию-манипулятор ввода-вывода |
| sb | - | указатель на буфер потока для записи всех данных |
Возвращаемое значение
Примечания
Для перегрузки ( 14 ) , когда расширенный тип с плавающей точкой имеет ранг преобразования с плавающей точкой, не равный рангу любого стандартного типа с плавающей точкой, то двойное округление во время преобразования может привести к неточным результатам. std::from_chars() может быть использована в ситуациях, когда важна максимальная точность.
Пример
#include <iomanip> #include <iostream> #include <sstream> int main() { std::string input = "41 3.14 false hello world"; std::istringstream stream(input); int n; double f; bool b; stream >> n >> f >> std::boolalpha >> b; std::cout << "n = " << n << '\n' << "f = " << f << '\n' << "b = " << std::boolalpha << b << '\n'; // extract the rest using the streambuf overload stream >> std::cout.rdbuf(); std::cout << '\n'; }
Вывод:
n = 41 f = 3.14 b = false hello world
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 64 | C++98 |
было неясно, может ли перегрузка
(18)
повторно выбрасывать только
std::ios_base::failure выброшенный вызовом setstate ( failbit ) |
все перехваченные исключения
могут быть перевыброшены |
| LWG 118 | C++98 |
перегрузка
(12,13)
делегировала извлечение в
num_get::get
,
но у него нет перегрузок для short и int |
извлекается значение
long
вместо short или int |
| LWG 413 | C++98 |
перегрузка
(18)
перевыбрасывала только исключения, выброшенные при извлечении
символов из sb , но символы извлекаются из * this |
исправлено sb на * this |
| LWG 567 | C++98 |
перегрузка
(18)
вела себя как
FormattedInputFunction
из-за решения LWG issue 60 |
она ведет себя как
UnformattedInputFunction |
| LWG 661 | C++98 |
перегрузки
(12,13)
не сохраняли извлеченное число
в value из-за решения LWG issue 118 |
сохраняет число, если
не происходит переполнения |
| LWG 696 | C++98 | value не изменялось при неудачном извлечении |
устанавливается в ноль или минимальные/
максимальные значения |
Смотрите также
|
извлекает символы и массивы символов
(шаблон функции) |
|
|
выполняет ввод и вывод строк в потоки
(шаблон функции) |
|
|
выполняет ввод и вывод битовых наборов в потоки
(шаблон функции) |
|
|
сериализует и десериализует комплексное число
(шаблон функции) |
|
|
(C++11)
|
выполняет ввод и вывод генератора псевдослучайных чисел в потоки
(шаблон функции) |
|
(C++11)
|
выполняет ввод и вывод распределения псевдослучайных чисел в потоки
(шаблон функции) |
|
извлекает блоки символов
(публичная функция-член) |
|
|
извлекает уже доступные блоки символов
(публичная функция-член) |
|
|
извлекает символы
(публичная функция-член) |
|
|
извлекает символы до обнаружения заданного символа
(публичная функция-член) |
|
|
(C++17)
|
преобразует последовательность символов в целочисленное или вещественное значение
(функция) |