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 |
읽거나 쓸 비트셋 |
반환값
각각 os와 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; // 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>> |
이진 왼쪽 및 오른쪽 시프트 수행 (공개 멤버 함수) |