질문:
함수가 다음과 같은 시나리오에서 printHex라고 부르겠습니다. std::cout의 상태를 수정합니다(예: 기본, 필드 너비 등), 함수 호출 후 원래 상태를 어떻게 복원할 수 있나요? 이 문제는 std::cout을 사용하는 후속 출력이 printHex 내에서 이루어진 상태 변경으로 인해 손상될 때 발생합니다.
답변:
std::cout 및 원래 설정으로 되돌리면
또는 리소스 획득은 초기화를 사용하여 복원 프로세스를 구현할 수 있습니다. (RAII) 플래그를 자동으로 관리하는 관용구입니다. 예는 다음과 같습니다.
class RestoreCoutFlags { public: RestoreCoutFlags(std::ostream& stream) : _savedFlags(stream.flags()) {} ~RestoreCoutFlags() { stream.flags(_savedFlags); } operator std::streambuf*() const { return stream.rdbuf(); } private: std::ios_base::fmtflags _savedFlags; };
이 수업을 사용하면 다음과 같이 복원할 수 있습니다.
{ RestoreCoutFlags r(std::cout); // Code that modifies std::cout flags } // When the block exits, r is automatically destroyed, restoring the flags.
위 내용은 함수가 서식 플래그를 수정한 후 `std::cout`의 원래 상태를 어떻게 복원할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!