マニピュレータとフォーマット オブジェクト
stringstream を構築しようとすると、std::setw() の動作に関してよくある誤解が生じます。 。 stringstream は挿入のたびにリセットされるため、stringstream に永続的に影響を与えると想定するのは誤った想定でした。この記事は、スティッキー マニピュレーターと非スティッキー マニピュレーターおよびフォーマット オブジェクトの区別を明確にし、次の質問に対処することを目的としています:
スティッキー マニピュレータ
std::ios_base 内のマニピュレータは 2 つのカテゴリに分類できます:
フォーマット オブジェクト
フォーマット オブジェクトは、ストリームのフォーマット プロパティを一時的に変更するために使用されます。マニピュレータとは対照的に、マニピュレータはストリーム オブジェクトに直接影響しません。この例としては、PutSquareBracket 書式オブジェクトが挙げられます。これにより、永続的な状態に影響を与えることなく書式設定を一時的に変更できます。
結論
std::setw() はユニークです。マニピュレーターの中で唯一非粘着性です。その特定の動作に関する文書が不足しているのは、他のマニピュレーターとの認識された類似性に起因する可能性があります。ただし、実際には、フォーマットされた出力操作では幅を明示的にゼロに設定する必要があるため、動作が異なります。
以上がstd::setw() と Stringstreams: スティッキー マニピュレーターと非スティッキー マニピュレーター — 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。