C++/iomanip
< C++
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