如何在不使用命名空间 std 的情况下取消设置 ios::fixed

How to unsetf ios::fixed without using namespace std

Soooo...我想写这段代码 没有 using namespace std; 因为我最近了解到 "polluting the global namespace" 是不好的做法。

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>

using namespace std; // bad practice, trying to remove

int main() {
    std::ofstream outFile; // instead use explicit namespaces

    /* lots of code */

    // eventually I set some manipulators
    outFile << std::fixed << std::showpoint << std::setprecision(2);

    /* more code */

    // later I wish to unset fixed
    outFile.unsetf(ios::fixed); // <-- this part

在这个 outFile.unsetf(ios::fixed) 之前,我在没有命名空间的情况下表现很好,它只有在我使用命名空间 std 时才有效。我试图在不使用命名空间的情况下编写以下变体:

outFile.unsetf(ios::fixed)
outFile.unsetf(std::fixed)
outFile.unsetf(ios::std::fixed)

iosstd 命名空间内的命名空间吗?然后,下一个对我来说最有意义,但也行不通。

outFile.unsetf(std::ios::fixed)

主要是,我需要一些帮助来使用显式名称空间修复这一行。其次,如果我需要弥合关键的知识差距,一些帮助识别它,也许一些关键字去查找会有所帮助。

使用std::ios_base::fixed:

outFile.unsetf(std::ios_base::fixed);