2016-12-27 14 views
0
#include <iostream> 
#include<iomanip> 
using namespace std; 

int main() { 
int x=44; 

cout<<setiosflags(ios::oct)<<x; 

return 0; 
} 

出力を44にしています。 これはなぜですか? 出力を54にしたい場合は何ができますか? < < resetiosflagsの(マスク)を表現または resetiosflagsの(マスク)>>で使用する場合C++のsetiosflagsがこのように動作するのはなぜですか?

+3

たとえば、 [この 'setiosflags'リファレンス](http://en.cppreference.com/w/cpp/io/manip/setiosflags)では、この例では[' resetiosflags'](http://en.cppreference.com)が呼び出されます/ w/cpp/io/manip/resetiosflags)を使用します。あなたはそれを試しましたか? –

+2

フラグを1つしか設定していないので、代わりに['std :: oct'](http://en.cppreference.com/w/cpp/io/manip/hex)を使うべきです:' cout << oct << x; ' –

+0

http://stackoverflow.com/users/440558/some-programmer-dude私は言及したリンクを参照しましたが、なぜそれがリセット後に機能しますか? – gk123

答えて

0

documentationを参照してください、あなたはすべてのフォーマットフラグを最初

をクリアする必要があり、すべてのフォーマットフラグをクリアマスクで指定されているように に出力されます。

次のような記述。

cout << std::resetiosflags(std::ios_base::dec) << setiosflags(ios_base::oct) << x; 
+0

以前は16進数でしたか? – Potatoswatter

+0

あなたはstd :: ios_base :: basefieldを使うことができます –

関連する問題