iomanip是w:C++标准程式库中的一个w:头文件,定义了C++标准中的流输入输出的有参数的操纵器(monipulator)。

概述 编辑

  • C++98
    • resetiosflags : 重置输入或输出流的格式化标记。
    • setiosflags : 设置输入或输出流的格式化标价。
    • setbase : 设置进制,支持8进制、10进制、16进制。
    • setfill : 设置std::setw将填充什么样的字符,如:std::setfill('*')
    • setprecision : 设置浮点数的精度。
    • setw : 设置填充多少个字符,默认填充的字符为' '空格。 setw 只为紧随其后的值建立一个字段宽度。打印该值后,流将回到其默认的打印方式。
  • C++11:用于在输入流或输出流中,按照浸染的locale以及给定的格式化字符串fmt,分析输入/输出的字符形式的时间值或金额,存储在相应的结构变量中。注意,money用long double或string类型表示,并且是包括了辅币的整型值,例如$1.23实际表示为123.
    • get_money : 根据本地设置,从输入流中提取money值。
    • put_money : 根据本地设置,输出money值。
    • get_time : 根据本地设置,从输入流中提取time值。
    • put_time : 根据本地设置,输出time值。
  • C++14
    • quoted : 输入或输出引号括起来的字符 (quoted string,例如,XML和CSV格式的字符串)。能够确保带有嵌入空格的字符串在提取和插入的时候内容保持不变(skipws标志被关闭)。字符串中的转义字符被正确处理。

例子 编辑

#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
 
int main()
{
    std::tm t = {};
    std::istringstream ss("2011-Februar-18 23:12:34");
    ss.imbue(std::locale("de_DE.utf-8"));
    ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S");
    if (ss.fail()) {
        std::cout << "Parse failed\n";
    } else {
        std::cout << std::put_time(&t, "%c") << '\n';
    }
}

可能的输出:

Sun Feb 18 23:12:34 2011