C에서는 std::cout과 같은 스트림을 조작하여 형식과 동작을 변경할 수 있습니다. 그러나 이러한 조작 후에는 스트림의 원래 상태를 복원해야 할 수도 있습니다.
다음 코드가 있다고 가정합니다.
void printHex(std::ostream& x) { x << std::hex << 123; } int main() { std::cout << 100; // prints 100 base 10 printHex(std::cout); // prints 123 in hex std::cout << 73; // problem! prints 73 in hex.. }
printHex()를 호출한 후 std::cout의 상태 16진수 형식으로 정수를 인쇄하도록 변경되었습니다. 이로 인해 기본 함수에서 std::cout에 대한 후속 호출도 16진수로 인쇄되어 잠재적으로 예기치 않은 동작이 발생할 수 있습니다.
std::cout의 원래 상태를 복원하려면 스트림 플래그를 사용할 수 있습니다.
#include <iostream> int main() { std::ios_base::fmtflags f(cout.flags()); printHex(std::cout); cout.flags(f); // Restore original flags std::cout << 73; // prints 73 in decimal }
이 예에서 fmtflags 객체 f는 std::cout의 원래 스트림 플래그를 저장합니다. printHex()를 호출한 후 cout.flags(f)를 사용하여 명시적으로 스트림 플래그를 f의 값으로 다시 설정합니다. 이렇게 하면 std::cout의 상태가 원래 설정으로 복원됩니다.
스트림 플래그를 활용하고 적절하게 복원하면 형식 지정 동작에 대한 제어를 유지하면서 스트림을 조작할 수 있으며 잘못된 숫자 형식과 같은 의도하지 않은 결과를 방지할 수 있습니다. 이 사건.
위 내용은 형식을 수정한 후 std::cout의 원래 상태를 어떻게 복원할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!