Пространства имён
Варианты
Действия

operator<<,>>(std::bitset)

Материал из cppreference.com
< cpp‎ | utility‎ | bitset
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
std::bitset
Типы элементы
Функции-элементы
Доступ к элементам
Ёмкость
Модификаторы
Преобразования
Функции, не являющиеся элементами
operator<<operator>>
Вспомогательные классы
(C++11)
 
Определено в заголовочном файле <bitset>
template<class CharT, class Traits, std::size_t N >

std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os,

                                               conststd::bitset<N>& x );
(1)
template<class CharT, class Traits, std::size_t N >

std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is,

                                               std::bitset<N>& x );
(2)

Вставляет или извлекает набор битов из потока символов.

1) Записывает битовый набор x в поток символов os, как если бы сначала преобразовывал его в basic_string<CharT,Traits> с помощью to_string(), а затем записал его в os, используя operator<< (который представляет собой FormattedOutputFunction для строк). Символы, используемые для представления единиц и нулей, берутся из текущей локали с помощью вызова std::use_facet<std::ctype<CharT>(os.getloc()).widen() с аргументами '1' и '0'.
2) Ведёт себя как FormattedInputFunction. После построения и проверки объекта ограничителя, который может пропускать начальные пробелы, извлекается до N символов из is и сохраняется в наборе битов x.


Символы извлекаются до тех пор пока:

  • N символов будет прочитано
  • был достигнут конец файла в is
  • следующий символ не является ни is.widen('0'), ни is.widen('1').

Если N > 0 и символы не извлечены, вызывается is.setstate(ios_base::failbit).

Содержание

[править]Параметры

os символьный поток для записи
is символьный поток для чтения
x битовый набор для чтения или записи

[править]Возвращаемое значение

1)os
2)is

[править]Пример

#include <bitset>#include <iostream>#include <sstream>   int main(){std::string bit_string ="001101";std::istringstream bit_stream(bit_string);   std::bitset<3> b1; bit_stream >> b1;// прочли "001", поток до сих пор содержит "101"std::cout<< b1 <<'\n';   std::bitset<8> b2; bit_stream >> b2;// прочли "101", дополняем до 8 бит, и теперь набор содержит "00000101"std::cout<< b2 <<'\n';}

Вывод:

001 00000101

[править]Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 303 C++98 однобайтовые символы были извлечены из is, но CharT
может иметь несколько байтов
извлекает CharT и сравнивает его с расширенными
'0' и '1'
LWG 396 C++98 контент, записанный operator<<, не зависел от
региональных настроек
записывает широкие '0' и '1'
LWG 3199 c++98 извлечение std::bitset<0> всегда устанавливает failbit такое извлечение никогда не устанавливает
failbit

[править]Смотрите также

выполняет двоичный сдвиг влево и вправо
(public функция-элемент)[править]
close