std::cin,std::wcin

C++

编译器支持

自由(freestanding)与宿主(hosted)

语言

标准库

标准库头文件

具名要求

特性测试宏 (C++20)

语言支持库

概念库 (C++20)

诊断库

内存管理库

元编程库 (C++11)

通用工具库

容器库

迭代器库

范围库 (C++20)

算法库

字符串库

文本处理库

数值库

日期和时间库

输入/输出库

文件系统库 (C++17)

并发支持库 (C++11)

执行控制库 (C++26)

技术规范

符号索引

外部库

[编辑] 输入/输出库

I/O 操纵器

打印函数 (C++23)

C 风格 I/O

缓冲区

basic_streambuf

basic_filebuf

basic_stringbuf

basic_spanbuf(C++23)

strstreambuf(C++98/26*)

basic_syncbuf(C++20)

抽象

ios_base

basic_ios

basic_istream

basic_ostream

basic_iostream

文件 I/O

basic_ifstream

basic_ofstream

basic_fstream

字符串 I/O

basic_istringstream

basic_ostringstream

basic_stringstream

数组 I/O

basic_ispanstream(C++23)

basic_ospanstream(C++23)

basic_spanstream(C++23)

istrstream(C++98/26*)

ostrstream(C++98/26*)

strstream(C++98/26*)

同步输出

basic_osyncstream(C++20)

类型

streamoff

streamsize

fpos

错误类别接口

iostream_category(C++11)

io_errc(C++11)

[编辑] std::basic_istream

全局对象

cinwcin

成员函数

basic_istream::basic_istream

basic_istream::~basic_istream

basic_istream::operator=(C++11)

格式化输入

basic_istream::operator>>

非格式化输入

basic_istream::get

basic_istream::peek

basic_istream::unget

basic_istream::putback

basic_istream::getline

basic_istream::ignore

basic_istream::read

basic_istream::readsome

basic_istream::gcount

定位

basic_istream::tellg

basic_istream::seekg

杂项

basic_istream::sync

basic_istream::swap(C++11)

成员类

basic_istream::sentry

非成员函数

operator>>(std::basic_istream)

[编辑]

定义于头文件

extern std::istream cin;

(1)

extern std::wistream wcin;

(2)

全局对象 std::cin 和 std::wcin 控制着来自实现定义类型(派生自 std::streambuf)的流缓冲区的输入,该缓冲区与标准 C 输入流 stdin 相关联。

这些对象保证在类型为 std::ios_base::Init 的对象首次构造期间或之前被初始化,并且可用于具有有序初始化的静态对象的构造函数和析构函数中(只要在定义对象之前包含)。

除非已发出 sync_with_stdio(false),否则从多个线程并发访问这些对象进行格式化和非格式化输入是安全的。

一旦初始化:

1) std::cin.tie() 返回 &std::cout。这意味着在 std::cin 上的任何输入操作,如果任何字符待输出,则强制调用 std::cout.flush()。

2) std::wcin.tie() 返回 &std::wcout。这意味着在 std::wcin 上的任何输入操作,如果任何字符待输出,则强制调用 std::wcout.flush()。

[编辑] 注意

名称中的“c”指的是“字符”(stroustrup.com FAQ);cin 表示“字符输入”,wcin 表示“宽字符输入”。

[编辑] 示例

运行此代码

#include

struct Foo

{

int n;

Foo()

{

std::cout << "Enter n: "; // no flush needed

std::cin >> n;

}

};

Foo f; // static object

int main()

{

std::cout << "f.n is " << f.n << '\n';

}

可能的输出

Enter n: 10

f.n is 10

[编辑] 另请参阅

Init

初始化标准流对象 (std::ios_base 的公共成员类) [编辑]

coutwcout

写入标准 C 输出流 stdout(全局对象)[编辑]

stdinstdoutstderr

与输入流关联的 FILE* 类型的表达式与输出流关联的 FILE* 类型的表达式与错误输出流关联的 FILE* 类型的表达式 (宏常量) [编辑]