> 백엔드 개발 > C++ > std::setw() 및 Stringstreams: 고정 조작기와 비고착 조작기 - 차이점은 무엇입니까?

std::setw() 및 Stringstreams: 고정 조작기와 비고착 조작기 - 차이점은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-11 12:37:11
원래의
781명이 탐색했습니다.

std::setw() and Stringstreams: Sticky vs. Non-Sticky Manipulators—What's the Difference?

조작자 대 형식 개체

문자열 스트림을 구성하려고 시도하는 동안 std::setw()의 동작과 관련하여 일반적인 오해가 발생합니다. . 문자열 스트림에 영구적으로 영향을 미칠 것이라고 가정하는 것은 삽입할 때마다 재설정되므로 잘못된 가정이었습니다. 이 글의 목적은 다음 질문에 답하면서 고정 조작자와 비고정 조작자와 형식 객체 간의 차이를 명확히 하는 것입니다.

  • std::setw()가 이런 방식으로 동작하는 이유는 무엇입니까?
  • 비슷한 조작기가 또 있나요? 동작이요?
  • std::ios_base::width()와 std::setw()는 동작 측면에서 어떻게 다릅니까?
  • 이 동작에 관한 명확한 문서는 어디에서 찾을 수 있습니까? 온라인?

고정 조작기

std::ios_base 내의 조작기는 두 가지 범주로 분류할 수 있습니다.

  • 객체를 반환하는 조작자: 조작자는 스트림 객체에 직접적인 영향을 미치지 않으므로 "고착성"을 나타내지 않습니다. 여기에는 setw가 포함됩니다.
  • 스트림을 반환하는 조작기: 이러한 조작기는 스트림 객체에 직접 영향을 미치므로 "고정"됩니다. 즉, 다른 조작기에 의해 명시적으로 변경될 때까지 수정 사항이 지속됩니다. 예로는 setiosflags 및 setfill이 있습니다.

형식 개체

형식 개체는 스트림의 형식 지정 속성을 일시적으로 변경하는 데 사용됩니다. 조작자와 달리 스트림 개체에 직접 영향을 주지 않습니다. 이에 대한 예는 영구 상태에 영향을 주지 않고 형식을 임시로 수정할 수 있는 PutSquareBracket 형식 개체입니다.

결론

std::setw()는 고유합니다. 조작자 중에서 유일하게 끈적이지 않는 것입니다. 특정 동작에 관한 문서가 부족한 것은 다른 조작자와 유사하다고 인식되었기 때문일 수 있습니다. 그러나 실제로는 너비를 명시적으로 0으로 설정해야 하는 형식화된 출력 작업의 요구 사항으로 인해 다르게 동작합니다.

위 내용은 std::setw() 및 Stringstreams: 고정 조작기와 비고착 조작기 - 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿