// setfill example
#include <iostream> // std::cout, std::endl
#include <iomanip> // std::setfill, std::setw
class IosFlagSaver {
public:
explicit IosFlagSaver(std::ostream& _ios):
ios(_ios),
f(_ios.flags()) {
}
~IosFlagSaver() {
ios.flags(f);
}
IosFlagSaver(const IosFlagSaver &rhs) = delete;
IosFlagSaver& operator= (const IosFlagSaver& rhs) = delete;
private:
std::ostream& ios;
std::ios::fmtflags f;
};
int main1 () {
IosFlagSaver iosfs(std::cout);
using std::cout;
using std::setw;
cout << std::left <<
setw(10) << "12345," <<
setw(12) << "abcdefghik," <<
setw(3) << "ABC" << "\n";
return 0;
}
int main2 () {
IosFlagSaver iosfs(std::cout);
using std::cout;
using std::setw;
cout << std::left <<
setw(10) << "12345," <<
setw(12) << "abcdefghik," <<
setw(3) << "ABC" << "\n";
return 0;
}
int main () {
using std::cout;
using std::setw;
// os_r.fill(' ');
// os_r.width(0);
cout << "Calling main1" << std::endl;
main1();
cout << "Calling main2" << std::endl;
main2();
return 0;
}
Ly8gc2V0ZmlsbCBleGFtcGxlCiNpbmNsdWRlIDxpb3N0cmVhbT4gICAgIC8vIHN0ZDo6Y291dCwgc3RkOjplbmRsCiNpbmNsdWRlIDxpb21hbmlwPiAgICAgIC8vIHN0ZDo6c2V0ZmlsbCwgc3RkOjpzZXR3CgpjbGFzcyBJb3NGbGFnU2F2ZXIgewpwdWJsaWM6CiAgICBleHBsaWNpdCBJb3NGbGFnU2F2ZXIoc3RkOjpvc3RyZWFtJiBfaW9zKToKICAgICAgICBpb3MoX2lvcyksCiAgICAgICAgZihfaW9zLmZsYWdzKCkpIHsKICAgIH0KICAgIH5Jb3NGbGFnU2F2ZXIoKSB7CiAgICAgICAgaW9zLmZsYWdzKGYpOwogICAgfQoKICAgIElvc0ZsYWdTYXZlcihjb25zdCBJb3NGbGFnU2F2ZXIgJnJocykgPSBkZWxldGU7CiAgICBJb3NGbGFnU2F2ZXImIG9wZXJhdG9yPSAoY29uc3QgSW9zRmxhZ1NhdmVyJiByaHMpID0gZGVsZXRlOwoKcHJpdmF0ZToKICAgIHN0ZDo6b3N0cmVhbSYgaW9zOwogICAgc3RkOjppb3M6OmZtdGZsYWdzIGY7Cn07CgoKaW50IG1haW4xICgpIHsKCklvc0ZsYWdTYXZlciBpb3NmcyhzdGQ6OmNvdXQpOwoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OnNldHc7CgoKCmNvdXQgPDwgc3RkOjpsZWZ0IDw8CiAgIHNldHcoMTApIDw8ICIxMjM0NSwiIDw8CiAgIHNldHcoMTIpIDw8ICJhYmNkZWZnaGlrLCIgPDwgCiAgIHNldHcoMykgPDwgIkFCQyIgPDwgIlxuIjsKICAgICAgICAKICByZXR1cm4gMDsKfQoKaW50IG1haW4yICgpIHsKCklvc0ZsYWdTYXZlciBpb3NmcyhzdGQ6OmNvdXQpOwoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OnNldHc7Cgpjb3V0IDw8IHN0ZDo6bGVmdCA8PCAKICAgc2V0dygxMCkgPDwgIjEyMzQ1LCIgPDwKICAgc2V0dygxMikgPDwgImFiY2RlZmdoaWssIiA8PCAKICAgc2V0dygzKSA8PCAiQUJDIiA8PCAiXG4iOwogICAgICAgIAogIHJldHVybiAwOwp9CgppbnQgbWFpbiAoKSB7Cgp1c2luZyBzdGQ6OmNvdXQ7CnVzaW5nIHN0ZDo6c2V0dzsKCiAgLy8gb3Nfci5maWxsKCcgJyk7CiAgLy8gb3Nfci53aWR0aCgwKTsKICAgCiAgIApjb3V0IDw8ICJDYWxsaW5nIG1haW4xIiA8PCBzdGQ6OmVuZGw7Cm1haW4xKCk7Cgpjb3V0IDw8ICJDYWxsaW5nIG1haW4yIiA8PCBzdGQ6OmVuZGw7Cm1haW4yKCk7CgogICByZXR1cm4gMDsKfQ==