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