跳到主要内容

C++ cin 流

cin 对象用于接受来自标准输入设备,即键盘的输入。它定义在 iostream 头文件中。

示例

#include <iostream>
using namespace std;

int main() {
int num;

cout << "Enter a number: ";

// 输入一个整数
cin >> num;

cout << "You entered: " << num;

return 0;
}

输出

Enter a number: 25
You entered: 25

cin 语法

cin 对象的语法是:

cin >> var_name;

其中,

  • >> 是提取运算符。
  • var_name 通常是一个变量,但也可以是数组、向量、列表等容器的元素。

使用提取运算符的 cin

cin 中的 "c" 代表 "character"(字符),"in" 意味着 "input"(输入)。因此,cin 表示 "字符输入"

cin 对象与提取运算符 >> 一起使用,以接收字符流。例如,

int num;
cin >> num;

>> 运算符也可以在同一语句中使用多次,以接受多个输入:

cin >> var1 >> var2 >>>> varN;

示例 1:使用提取运算符的 cin

#include <iostream>
using namespace std;

int main() {
int num1, num2, num3;

cout << "Enter a number: ";

// 单个输入
cin >> num1;

cout << "Enter 2 numbers:" << endl;

// 多个输入
cin >> num2 >> num3;

cout << "Sum = " << (num1 + num2 + num3);

return 0;
}

输出

Enter a number: 9
Enter 2 numbers:
1
5
Sum = 15

cin 与成员函数

cin 对象也可以与其他成员函数一起使用,例如 getline()read() 等。一些常用的成员函数包括:

  • cin.get(char &ch): 读取一个输入字符并将其存储在 ch 中。
  • cin.getline(char *buffer, int length): 将字符流读入字符串 buffer
    • 读取了 length-1 个字符后停止,或者
    • 遇到换行符 '\n' 或文件结束符 eof 时停止。

cin.read(char *buffer, int n): 从流中读取 n 个字节(或直到文件结束)到 buffer 中。 cin.ignore(int n): 忽略输入流中的接下来的 n 个字符。 cin.eof(): 如果达到文件结束(eof),返回非零值。

示例 2:使用成员函数的 cin

#include <iostream>
using namespace std;

int main() {
char name[20], address[20];

cout << "Name: ";

// 使用 cin 的 getline()
cin.getline(name, 20);

cout << "Address: ";

cin.getline(address, 20);

cout << endl << "You entered " << endl;
cout << "Name = " << name << endl;
cout << "Address = " << address;

return 0;
}

输出

Name: Sherlock Holmes
Address: Baker Street, UK

You entered
Name = Sherlock Holmes
Address = Baker Street, UK

cin 原型

ciniostream 头文件中的原型是:

extern istream cin;

C++ 中的 cin 对象是 istream 类的一个对象。它与标准 C 输入流 stdin 关联。

cin 对象保证在第一次构造类型为 ios_base::Init 的对象时或之前被初始化。

在构造 cin 对象之后,cin.tie() 返回 &cout。这意味着任何对 cin 的格式化输入操作都会在有待输出的字符时强制调用 cout.flush()