C++ 中 cin 类对象的一些使用方法

cin 是 C++ 语言中标准输入流对象,cin 主要用于从标准输入读取数据 (键盘输入)。

标准输入缓冲区:键盘输入字符后按下回车键,将所输入字符与回车键(\r)送入缓冲区。

cin 读取数据也是从缓冲区中获取数据,缓冲区为空时,cin 的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发 cin 的成员函数去读取数据。

使用 cin 获取字符、字符串

读取字符——cin.get()

#include<iostream>

int main()
{
    using namespace std;
    char a, b;
    a = cin.get();
    cin.get(b);
    
    cout << "a:" << a << "\n";
    cout << "b:" << b << "\n";
    
    return 0;
}

读取字符串——cin.get()、cin.getline()

#include<iostream>

int main()
{
    using namespace std;
    char array[20];
    
    cin.get(array, 20);  //20个字符中已包括结束符,故最多可以19个字符
    
    cout << "array:" << array << "\n";
    
    return 0;
}

当键盘敲下回车键时,结束读取字符,但不对回车字符进行处理,回车字符仍然保留在输入缓冲区中。

#include<iostream>

int main()
{
    using namespace std;
    char array[20];
    
    cin.getline(array, 20);  //20个字符中已包括结束符,故最多可以19个字符
    
    cout << "array:" << array << "\n";
    
    return 0;
}

当键盘敲下回车键时,结束读取字符,并将回车字符从输入缓冲区中删除。

以流方式读取字符、字符串——cin >>

#include<iostream>

int main()
{
    using namespace std;
    char array[20];
    
    cout << "请输入字符串:" ;
    cin >> array;
    
    cout << "字符串为:" << array;
}

注意:使用“cin >> ”读取字符串时,空格键也将作为字符串结束的标志。

cin 的条件状态

当使用 cin 读取发生错误时,cin 将设置条件状态,条件状态表示符号为:

goodbit: 无错误

eofbit: 已到达文件尾

failbit: 非致命的输入 / 输出错误,可挽回

badbit: 致命的输入 / 输出错误, 无法挽回

状态标识符号复位——cin.clear()

#include <iostream>
int main() 

{
    using namespace std;
    char ch, str[20]; 
    
    cin.getline(str, 5); 
    cout<<"flag1:"<<cin.good()<<endl; // 查看goodbit状态,即是否有异常 
    cin.clear(); // 清除错误标志 
    cout<<"flag1:"<<cin.good()<<endl; // 清除标志后再查看异常状态 
    cin>>ch; 
    
    cout<<"str:"<<str<<endl; 
    cout<<"ch :"<<ch<<endl;
    
 	return 0; 

}

cin 清空缓冲区

清空输入缓冲区——cin.ignore()

cin.ignore(n, ‘\n’) 在输入缓冲区中跳过个字符,遇到 \n 时提前结束。

请自行对比下面两段代码:

#include <iostream>
 
int main()
{
    using namespace std;
	char str[30];
	cout << "请输入一个字符串:";
	cin >> str;
	cout << str << endl;
 
	cout << "请输入任意字符结束程序!\n";
	cin.get();
 
	return 0;
}
#include <iostream>
 
int main()
{
    using namespace std;
	char str[30];
	cout << "请输入一个字符串:";
	cin >> str;
	cout << str << endl;
 
	cin.ignore(100, '\n');
	cout << "请输入任意字符结束程序!\n";
	cin.get();
 
	return 0;
}

注意:不要忘记清除错误标识