C++输入输出流

要点

  • cin>>
    最常见的是获取输入的一个字符或数字。cin>>会自动过滤掉不可见字符(如空格、换行、回车等)
  • get(c)
    用来接收字符,只获取一个字符,可以接收空格、换行、回车,遇回车结束。
  • cin.get(数组名,接收字符数目)
    用来接收字符串,可以接收空格,遇回车结束。由于字符串最后一个字符是'\0',所以当输入中超过len-1个字符时,实际只能接受len-1个字符。
  • cin.get()
    没有参数。主要用于舍弃输入流中不需要的字符,或者舍弃回车,即舍弃输入流中的一个字符。
  • cin.getline(接收字符串到m,接收个数n,结束字符)
    接收一个字符串,可以接收空格等,最后一个字符为‘\0’。结束符可以通过设置第三个参数自己设置,默认是回车。m不能为string类型。
  • cin.peek()
    其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF( - 1)
int main() {
    char c;
    char buf[10];
    c = cin.peek();
    if (c > '0'&&c < '9') {
        cin >> buf;
        cout << buf << endl;
    }
    else {
        cout << "first char is not number" << endl;
    }
}
peek
  • cin.putback()
    作用是将前面用get或者getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针的位置,供后面读取。
int main() {
    char c;
    char buf[10];
    cout << "input word:" << endl;
    c = cin.get();
    if (c > '0'&&c < '9') {
        cin.putback(c);
        cin >> buf;
        cout << buf;
    }
    else {
        cout << "first char is not number" << endl;
    }
    return 0;
}
3.png

C++输入输出流_第1张图片
4.png

示例

#include "iostream"
using namespace std;

int main()
{
    char a, b, c;
    //cin>>会过滤不可见字符(空格、回车、换行)。
    cin >> a >> b >> c;
    cout << "a=" << a << ",b=" << b << ",c=" << c << endl;
    char buf[10];
    cin >> buf;
    cout <<"[cin >> buf]="<< buf << endl;
    char d;
    //接收一个字符
    cin.get(d);
    cout << "[get(d)]=" << d << " "<<(int)d< 
  
C++输入输出流_第2张图片
测试结果

输入方式,这里为了区分开始和结束,使用[ ]来演示,而不是输入内容

  • [ 1 2 3 回车]
    这时候1,2,3分别设置到了a,b,c中。证实了<<会过滤掉不可见字符
  • [4 回车]
    • buf的内容为4;
    • cin.get(d)后,d的结果为空格(从ASCii值可知);
    • cin.get()吸收了回车;
  • [123456789123]
    • get(buf,10)后buf的内容为123456789说明只能接受10-1个字符,最后一个为'\0'。
    • getLine(buf,10)接收剩余的字符。

你可能感兴趣的:(C++输入输出流)