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 中国語 Web サイトの他の関連記事を参照してください。