我希望把所有的標誌上有loop.I試圖像這樣做,如何打開所有標誌?
#include<iostream>
using namespace std;
void showflags()
{
// ios::fmtflags f;
long f=cout.flags();
long i;
for(i=16384;i;i=i>>1)
if(i&f)
cout<<"1 ";
else cout<<"0 ";
cout<<endl;
}
void setallflag()
{
ios_base::fmtflags f,i=16384;
for(;i;i>>=1)
f=f|i;
cout.flag(f);
}
main()
{
showflags();
setallflag();
showflags();
}
,但它給了我一個錯誤說「從int無效的轉換爲std ::的ios_base :: fmtflags。
我想知道爲什麼會出現這種錯誤,以及如何解決它。
您需要投射。 –
可能的將來重複的[我從來沒有初始化'f'和一切都是錯誤的](http://stackoverflow.com/questions/1597405/what-happens-to-a-declared-uninitialized-variable-in-c-does-它有價值) –
你在這裏踩着危險的土地。格式標誌的值是[實現定義](http://en.cppreference.com/w/cpp/io/ios_base/fmtflags),所以你不應該嘗試以這種方式進行迭代,因爲它不能得到保證除了您特定的編譯器版本/操作系統/體系結構之外的任你最好明確自己實際需要的標誌。 – mindriot