c++ - 在 C++ 中关闭 setf?

标签 c++ setf

我正在使用 setf in 来显示输出中的小数位。

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);

但是,当我将上述代码放在输出之前时,其他输出也会受到影响。有什么办法可以只将 setf 用于单个输出吗?比如关掉它?

非常感谢!

最佳答案

setf 返回原始标志值,因此您可以简单地存储它,然后在完成后将其放回原处。

精度也是如此。

所以:

// Change flags & precision (storing original values)
const auto original_flags     = std::cout.setf(std::ios::fixed | std::ios::showpoint);
const auto original_precision = std::cout.precision(2);

// Do your I/O
std::cout << someValue;

// Reset the precision, and affected flags, to their original values
std::cout.setf(original_flags, std::ios::fixed | std::ios::showpoint);
std::cout.precision(original_precision);

阅读some documentation .

关于c++ - 在 C++ 中关闭 setf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782392/

相关文章:

lisp - 使用 SETF 函数扩展 SETF 是如何工作的?

lisp - setf 函数名称

variables - 通过使用 SETF 定义变量来避免错误

c++ - 使用 SFINAE 作为模板化构造函数时遇到问题

c++ - mpz_t 到数字数组 C++

c++ - fprintf 和 ofstream 无需打开文件即可使用

c++ - 打开和关闭 ODBC 连接导致崩溃

c++ - SSE2 整数溢出检查

c++ - 防止在C++中显示小数点前的零

common-lisp - 普通口齿不清 : Remove a pair in an alist via setq and assoc