Сбросить свойства std :: cout для целых или двойных чисел в переполнении стека

В разных местах моего кода я устанавливаю определенные свойства потока, например, в std::cout << fixed << 4.56342;для того, чтобы манипулировать как integer или же double появляется при печати в стандартном формате. Иногда во время определенного потока выполнения, std::cout используется без любые манипуляции, но результат непреднамеренно преобразуется из-за предшествующей манипуляции.

Итак, каков наилучший способ сбросить все такие свойства std::cout так что вызов std::cout<< будет вести себя точно так же, как в следующем примере:

#include <iostream>

int main(int argc, char **argv) {
// let X be an integer or a double
std::cout << X;
return 0;
}

я вижу Эффективное использование библиотеки C ++ iomanip, и имеет смысл вообще не использовать манипуляторы напрямую. Это будет хорошей стратегией на будущее. Тем не менее, было бы неплохо узнать, как отменить все такие манипуляции, как я описал выше.

0

Решение

использование resetiosflags:

std::cout << std::resetiosflags( std::ios_base::basefield ); // clears integer manipulations
std::cout << std::resetiosflags( std::ios_base::floatfield  ); // clears floating-point manipulations
std::cout << std::resetiosflags( std::cout.flags() ); // clears all flags
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]