在c ++中std :: fixed,std :: scientific等的正确类型是什么?

时间:2015-11-22 13:19:14

标签: c++ c++11

我正在尝试将std::fixedstd::scientific等...添加到变量中,但无法弄清楚如何。我正在尝试使用此代码,但它不起作用:

typedef std::vector<std::ios_base> FlagArray;

int main() {
    FlagArray tmp1 = { std::fixed, std::scientific };
    FlagArray tmp2 = { std::internal, std::right, std::left };
    FlagArray tmp3 = { std::uppercase, std::showbase, std::showpoint, std::showpos };
    return 0;
}

1 个答案:

答案 0 :(得分:6)

这些操纵者的类型是std::ios_base &(std::ios_base &str)。它们是功能。

这意味着,您需要使用std::vector<std::ios_base &(*)(std::ios_base &str)> FlagArray;

以下是您的代码的外观:

#include <iostream>
#include <vector>
#include <ios>

typedef std::vector<std::ios_base &(*)(std::ios_base &str)> FlagArray;

int main() {
    FlagArray tmp1 = {std::fixed,std::scientific};
    FlagArray tmp2 = {std::internal,std::right,std::left};
    FlagArray tmp3 = {std::uppercase,std::showbase,std::showpoint,std::showpos};
    return 0;
}