• C++:cin、cin.getline()、getline()的用法


    主要内容:

    1、cin用法

    2、cin.getline()用法

    3、getline()用法

    3、注意的问题

    一、cin>>

    用法1:输入一个数字或字符

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

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

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

    输入:jkljkljkl
    输出:jkljkljkl

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

    二、cin.getline()

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

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

    输入:jkljkljkl
    输出:jklj

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

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

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

    延伸:
    1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
    2、当第三个参数省略时,系统默认为''
    3、如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

    三、getline()

    用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”

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

    输入:jkljkljkl
    输出:jkljkljkl

    输入:jkl jfksldfj jklsjfl
    输出:jkl jfksldfj jklsjfl

    四、注意的问题

    1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

    str="
    ";
    getline(cin,str);

    的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

    看下面一段程序:

    /*-------------Basic Input/Output-------------*/
    #include<iostream>
    #include<string>
    #include<sstream>
    using namespace std;
    
    int main(){
        int age;
        //standard input(cin)
        cout<<"Please enter an integer value as your age: ";
        cin>>age;
        cout<<"Your ager is: "<<age<<".
    ";
        //cin and string
        string mystr;
        cout<<"What's your name? "<<endl;
        mystr="
    ";
        getline(cin,mystr);
    
        getline(cin,mystr);
        cout<<"Hello,"<<mystr<<".
    ";
        char sex;
        cout<<"Please enter a F or M as your sex: ";
        cin>>sex;
        cout<<"Your sex is: "<<sex<<endl;
        cout<<"What's your favorite team? ";
        mystr="
    ";
        getline(cin,mystr);
    
        getline(cin,mystr);
        cout<<"I like "<<mystr<<".
    ";
    
        system("pause");
        return 0;
    }

    运行结果为:

    image

    如果不添加红色代码,则运行结果为:

    image

    五、参考文献

    http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html

  • 相关阅读:
    Ajax beforeSend和complete 方法
    CLR Via CSharp读书笔记(17):委托
    linux上部署Django项目(Apache+mod_wsgi+django)
    用Apache+mod_wsgi部署python程序 作者:leven | 日期20101129 00:09:37
    VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
    Django and mod_wsgi deploy example
    How to use Django with FastCGI, SCGI, or AJP¶
    Fedora 15 下编译安装apache
    Change Ubuntu Server from DHCP to a Static IP Address
    How to Verify a CentOS Linux Server is 32 Bit or 64 Bit
  • 原文地址:https://www.cnblogs.com/lightmare/p/10398858.html
Copyright © 2020-2023  润新知