1

私はstd::stringstream通常の方法でクリアしています:

std::ostringstream ss;
for(...; ...; ...) {
    ... // Use ss.
    if(some_condition_to_reset_stringstream) {
        ss.str(std::string());
        ss.clear();
    }
    ... // Use ss some more.
}

std::hex残念ながら、これはスティッキー マニピュレータ ( 、std::setfillなど)をクリアしません。

std::stringstreamIO マニピュレータを含む全体をリセットする方法はありますか? それとも、各マニピュレータを個別に手動でリセットする必要がありますか?

4

1 に答える 1

4

どうやらC++ 11では、文字列ストリームを交換できるはずです:

if(some_condition_to_reset_stringstream) {
    std::ostringstream().swap(ss);
}

残念ながら、私はこれをサポートするコンパイラ (g++ 4.8.2) を持っていないので、これがスティッキー マニピュレータをクリアするかどうかをテストすることはできません (一度実装すると、そうすべきではない理由がわかりません)。

私のコンパイラはそれをサポートしていないので、まだ代替手段を探しています:)

于 2015-07-01T10:00:47.683 に答える