При копировании состояния формата ввода, обнаружил, что по умолчанию оно не нулевое. Решил провести тест: обнулить и смотреть что получается:
//обнуление всех флагов с сохранением старых
auto old_flags = cout.flags(0);
std::cout << "number of old flags cin/cout: "
<< std::bitset<12>(old_flags).count()
<< "\nnumber of new flags: " << cout.flags();
//восстановление старых флагов
cout.setf(old_flags);
Полученный результат говорит о том, что по умолчанию были установлены два формата, но после обнуления поток работает с таким же успехом.
P.S. Последный вывод выдает ноль
. Это подтверждение того, что ни один формат не установлен.
Вопрос: Какие же форматы установлены по умолчанию и как они влияют на состояние потока?
int main(int argc, const char * argv[])
{
auto old_flags = cout.flags(0);
#define fmt(x) cout << #x << ": " << (ios_base::x & old_flags) << endl
fmt(dec);
fmt(oct);
fmt(hex);
fmt(left);
fmt(right);
fmt(internal);
fmt(scientific);
fmt(fixed);
fmt(floatfield);
fmt(boolalpha);
fmt(showbase);
fmt(showpoint);
fmt(showpos);
fmt(skipws);
fmt(unitbuf);
fmt(uppercase);
}
Для Visual C++ 2017 дает ненулевые dec
и skipws
.
Для gcc, впрочем, то же самое: https://ideone.com/amWkcN
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Помогите пожалуйста дописать программуНужно написать процедуру, которая, получив в качестве параметра указатель на один из элементов двусвязного...
Я хочу сделать программу, которая при одном клике делает второй(нужно для копирования от 1 клика)Но,что я не пробовал, всё-равно выполняется...
Новый вопросЕсть появляющаяся форма (на ней элементы), задача сделать ее полупрозрачной