bitset_operator_ltltgtgt2

bitset_operator_ltltgtgt2 (비트셋 스트림 입출력 연산자)

이 페이지에서는 std::bitset을 문자 스트림에 삽입하거나 추출하는 연산자 operator<<operator>>에 대해 설명해요. 이 연산자들은 비트셋을 '0''1'로 이루어진 문자열처럼 다루어 입출력할 수 있게 해 줘요. 헤더 <bitset>에 정의되어 있어요.

출처: cppreference

본문

std::bitset은 다음 두 연산자를 통해 문자 스트림과 상호 작용해요.

  • operator<<는 비트셋을 출력 스트림에 삽입해요. 각 비트는 '0' 또는 '1' 문자로 변환되어 출력돼요.
  • operator>>는 입력 스트림에서 비트셋을 추출해요. 다음 조건 중 하나가 발생할 때까지 문자를 읽어요.

추출 조건:

  • N개의 문자가 읽혔을 때,
  • 입력 스트림 is에서 파일 끝(end-of-file)이 발생했을 때,
  • 다음 문자가 is.widen('0')is.widen('1')도 아닐 때.

매개변수

매개변수 설명
os 쓸 문자 스트림
is 읽을 문자 스트림
x 읽거나 쓸 비트셋

반환값

각각 osis를 그대로 반환해요.

예제

#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; // reads "001", stream still holds "101"
    std::cout << b1 << '\n';
    
    std::bitset<8> b2;
    bit_stream >> b2; // reads "101", populates the 8-bit set as "00000101"
    std::cout << b2 << '\n';
}

출력:

001
00000101

결함 보고서

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.

DR 적용 대상 기존 동작 올바른 동작
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를 설정하지 않음

더 알아보기

연산자 설명
operator<<= operator>>= operator<< operator>> 이진 왼쪽 및 오른쪽 시프트 수행 (공개 멤버 함수)

더 알아보기 (Learn more)

cppreference