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

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

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, 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++14)
(C++11)
(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
Типы элементы
Функции-элементы
Доступ к элементам
Ёмкость
Модификаторы
Преобразования
Функции, не являющиеся элементами
Вспомогательные классы
(C++11)
 
<tbody> </tbody>
Определено в заголовочном файле <bitset>
template< class CharT, class Traits, std::size_t N > std::basic_ostream<CharT, Traits>& operator<<( std::basic_ostream<CharT, Traits>& os, const std::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 функция-элемент) [править]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.