• [C++ Primer Plus] 零散知识点(一)、输入函数(cin,cin.get,cin.getline等)+string头文件辨析


     本文几乎照搬http://www.cnblogs.com/luolizhi/p/5746775.html博客,只修改了一点点。不知道怎么转发过来,尴尬。。。

      学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教。(本文所有程序均通过VS2015运行)

    1、cin 
    2、cin.get() 
    3、cin.getline() 
    4、getline() 
    5、gets() 
    6、getchar()

    附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符


     1、cin>>         

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

    #include <iostream> 
    using namespace std;
    void main()
    {
        int a, b;
        cin >> a >> b;
        cout << a + b << endl;
        system("pause");
    }

    注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等) 
    cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制

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

    #include <iostream> 
    using namespace std;
    void main()
    {
        char a[20];
        cin >> a;
        cout << a << endl;
        system("pause");
    }


    2、cin.get()

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

    #include <iostream> 
    using namespace std;
    void main()
    {
        char ch;
        ch = cin.get();      //或者cin.get(ch); 
        cout << ch << endl;
        system("pause");
    }

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

    #include <iostream> 
    using namespace std;
    void main()
    {
        char a[20];
        cin.get(a, 20);
        cout << a << endl;
        system("pause");
    }

    输入:jkl jkl jkl 
    输出:jkl jkl jkl

    输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 
    输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'')

    用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车

    #include<iostream>
    using namespace std;
    void main()
    {
        cout<<"hello world"<<endl;
        cin.get();//按下enter键结束
    }
    cin.get();

    该语句的作用是舍弃回车,如果没有这条语句,“hello world”会在屏幕上一闪而过,肉眼无法看到;加上这句后,屏幕会等待用户按下回车键。


    3、cin.getline()   // 接受一个字符串,可以接收空格并输出

    cin.getline(m,5):不断读取,直到遇到换行符(少于5个字符),在末尾加上一个空字符,换行符被丢弃
    #include<iostream>
    using namespace std;
    void main()
    {
        char m[20];
        cin.getline(m, 5);
        cout << m << endl;
        system("pause");
    }

    输入:jkljkljkl 
    输出:jklj

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

    如果把5改成20: 
    输入:jkljkljkl 
    输出:jkljkljkl

    输入:jklf fjlsjf fjsdklf 
    输出:jklf fjlsjf fjsdklf

    延伸: 
    cin.getline()实际上有三个参数,cin.getline(接受字符串m,接受个数5,结束字符) 
    当第三个参数省略时,系统默认为'' 
    如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj(没遇到‘a’,到了指定个数终止),输入jkaljkljkl时,输出jk(遇到了‘a’,提前终止)

    当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

    #include<iostream>
    using namespace std;
    void main()
    {
        char m[3][20];
        for (int i = 0; i<3; i++)
        {
            cout << "请输入第" << i + 1 << "个字符串:";
            cin.getline(m[i], 20);
        }
    
        for (int j = 0; j<3; j++)
            cout << "输出m[" << j << "]的值:" << m[j] << endl;
        system("pause");
    }


    4、getline()     // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”

    #include<iostream>
    #include<string>
    using namespace std;
    void main()
    {
        string str;
        getline(cin, str);
        cout << str << endl;
        system("pause");
    }

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


     string头文件辨析

  • 相关阅读:
    Aras前端的一些知识
    Eclipse 实用快捷键大全
    Eclipse插件使用links目录的用法
    extjs portal 保存 事件
    NDRS SQL
    [VB]修改注册表让程序开机自动运行
    [C++]数组参数
    [C++]指针类型出参
    [C++]函数返回值
    [VBA]Excel输出utf8编码格式文件 使用WideCharToMultiByte
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7519551.html
Copyright © 2020-2023  润新知