天天看点

C++ 标准输入流总结

    既然上一篇文章对标准输出流cout的格式化输出进行了总结,那么这篇文章就对c++的标准输入流用法进行全面总结。

    以下是关于C++编程中cin的几个常见用法:

    1. cin

    用法1:最基本,也是最常用的用法,输入一个数字:

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}
           

    输入:2[回车]3[回车]

    输出:5

    注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)   

cin >> noskipws >> input[j]; //不想略过空白字符,那就使用 noskipws 流控制
           

    用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束  

#include <iostream>
using namespace std;
int main()
{
    char a[20];
    cin >> a;
    cout << a << endl;
    return 0;
}
           

    输入:jkljkljkl

    输出:jkljkljkl

    输入:jkljkl jkljkl //遇空格结束

    输出:jkljkl 

    2. cin.get() 

     用法1: cin.get(字符变量名)可以用来接收字符    

#include <iostream>
using namespace std;
int main()
{
    char ch;
    ch = cin.get();    //或者cin.get(ch);
    cout << ch << endl;
    return 0;
}
           

    输入:jljkljkl

    输出:j

    用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格   

#include <iostream>
using namespace std;
int main()
{
    char a[20];
    cin.get(a, 20);
    cout << a << endl;
    return 0;
}
           

    输入:jkl jkl jkl

    输出:jkl jkl jkl

    输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)

    输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')

    用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足。

    3. cin.getline()

    用法:接受一个字符串,可以接收空格并输出   

#include <iostream>
using namespace std;
int main()
{
    char m[20];
    cin.getline(m, 5);
    cout << m << endl;
    return 0;
}
           

    输入:jkljkljkl

    输出:jklj

    接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出

    如果把5改成20:

    输入:jkljkljkl 输出:jkljkljkl

    输入:jklf fjlsjf fjsdklf

    输出:jklf fjlsjf fjsdklf

    4. getline()

    用法:接受一个字符串,可以接收空格并输出,需包含string头文件   

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str;
    getline(cin, str);
    cout << str << endl;
    return 0;
}
           

    输入:jkljkljkl

    输出:jkljkljkl

    输入:jkl jfksldfj jklsjfl

    输出:jkl jfksldfj jklsjfl

    和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    5. gets()

    用法:接受一个字符串,可以接收空格并输出,需包含string头文件  

#include <iostream>
#include <string>
using namespace std;
int main ()
{
    char m[20];
    gets(m);     //不能写成m=gets();
    cout << m << endl;
    return 0;
}
           

    输入:jkljkljkl

    输出:jkljkljkl

    输入:jkl jkl jkl

    输出:jkl jkl jkl

    6. getchar()

    用法:接受一个字符,需包含string头文件 

#include <iostream>
#include <string>
using namespace std;
int main ()
{
    char ch;
    ch = getchar();     //不能写成getchar(ch);
    cout << ch << endl;
    return 0;
}
           

    输入:jkljkljkl

    输出:j



继续阅读