В разных местах моего кода я устанавливаю определенные свойства потока, например, в 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, и имеет смысл вообще не использовать манипуляторы напрямую. Это будет хорошей стратегией на будущее. Тем не менее, было бы неплохо узнать, как отменить все такие манипуляции, как я описал выше.
использование 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
Других решений пока нет …