命名空間
變體
動作

std::cout, std::wcout

出自 cppreference.com
< cpp‎ | io
 
 
 
 
定義於標頭檔 <iostream>
extern std::ostream cout;
(1)
extern std::wostream wcout;
(2)

全域物件 std::coutstd::wcout 用於控制輸出至與標準 C 輸出串流 stdout 關聯的實作定義型別(衍生自 std::streambuf)的串流緩衝區。

這些物件保證會在 std::ios_base::Init 型別的物件建構期間或之前完成初始化,並且可在具有順序初始化的靜態物件的建構函式與解構函式中使用(前提是在定義該物件之前已包含 <iostream>)。

除非呼叫了 std::ios_base::sync_with_stdio(false),否則從多個執行緒併發存取這些物件(無論是格式化還是非格式化輸出)都是安全的。

根據 std::cin 的規格,std::cin.tie() 會回傳 &std::cout。這表示任何對 std::cin 的輸入操作都會執行 std::cout.flush()(透過 std::basic_istream::sentry 的建構函式)。同樣地,std::wcin.tie() 會回傳 &std::wcout

根據 std::cerr 的規格,std::cerr.tie() 會回傳 &std::cout。這表示任何對 std::cerr 的輸出操作都會執行 std::cout.flush()(透過 std::basic_ostream::sentry 的建構函式)。同樣地,std::wcerr.tie() 會回傳 &std::wcout(自 C++11 起)

[編輯] 註解

名稱中的 'c' 代表 "character"(字元)(stroustrup.com 常見問題集);cout 意為 "character output"(字元輸出),而 wcout 意為 "wide character output"(寬字元輸出)。

由於樣板變數的動態初始化是無序的,除非已建構 std::ios_base::Init 型別的物件,否則無法保證在初始化這類變數之前,std::cout 已被初始化至可用狀態。

[編輯] 範例

#include <iostream>
 
struct Foo
{
    int n;
    Foo()
    {
        std::cout << "static constructor\n";
    }
    ~Foo()
    {
        std::cout << "static destructor\n";
    }
};
 
Foo f; // static object
 
int main()
{
    std::cout << "main function\n";
}

輸出

static constructor
main function
static destructor

[編輯] 參見

初始化標準串流物件
(std::ios_base 的公開成員類別) [編輯]
寫入標準 C 錯誤串流 stderr,無緩衝
(全域物件)[編輯]
寫入標準 C 錯誤串流 stderr
(全域物件)[編輯]
與輸入串流關聯的 FILE* 型別表示式
與輸出串流關聯的 FILE* 型別表示式
與錯誤輸出串流關聯的 FILE* 型別表示式
(巨集常數) [編輯]
English Deutsch 日本語 中文(简体) 中文(繁體)