zoukankan      html  css  js  c++  java
  • C++中getline函数的用法

    getline(cin , string)

    总结:cin 会忽略前导的空格字符,且会以中间的空格字符为分界;getline(cin, string)函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。

    虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些问题。

    cin 读取数据时,它会传递并忽略前导的空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例

    cin >> namel;

    可以输入 "Mark" 或 "Twain",但不能输入 "Mark Twain",因为 cin 不能输入包含嵌入空格的字符串。

    例如

    #include <iostream>
    #include <string> // Header file needed to use string objects
    using namespace std;
    
    int main()
    {
        string name;
        string city;
        cout << "Please enter your name: ";    //输入John Doe
        cin >> name;
        cout << "Enter the city you live in: ";
        cin >> city;
        cout << "Hello, " << name << endl;
        cout << "You live in " << city << endl;
        return 0;
    }

    运行结果

    Please enter your name: John Doe
    Enter the city you live in: Hello, John
    You live in Doe

    本意是先输入name 然后输入city,但在这个示例中,用户根本没有机会输入 city 城市名。因为在第一个输入语句中,当 cin 读取到 John 和 Doe 之间的空格时,它就会停止阅读,只存储 John 作为 name 的值。在第二个输入语句中, cin 使用键盘缓冲区中找到的剩余字符,并存储 Doe 作为 city 的值。

    为了解决这个问题,可以用C++中的getline  函数此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。

    getline(cin, inputLine);

    其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变量的名称。

    下面的程序演示了 getline 函数的应用:

    #include <iostream>
    #include <string> // Header file needed to use string objects
    using namespace std;
    
    int main()
    {
        string name;
        string city;
        cout << "Please enter your name: ";
        getline(cin, name);
        cout << "Enter the city you live in: ";
        getline(cin, city);
        cout << "Hello, " << name << endl;
        cout << "You live in " << city << endl;
        return 0;
    }

    运行结果

    Please enter your name: John Doe
    Enter the city you live in: Chicago
    Hello, John Doe
    You live in Chicago

    参考:http://c.biancheng.net/view/1345.html 

    cin.getline(str , N)

    当用字符数组存储字符串时,例如char  str[1000] ,因为C++编译器不支持gets()方法,使用cin.getline(str , N) 来录入带有空格的字符串 !

  • 相关阅读:
    NULL、nil、Nil、NSNull的区别
    URL中有中文字符,转码方法
    iOS极光推送 点击推送消息跳转页面
    iOS中响应者链条-触摸事件
    WKWebKit基础
    iOS开发之详解正则表达式
    iOS中正则表达式的三种使用方式
    VS下载Github的项目引用报错
    RabbitMQ环境搭建
    ASP.NET Core之NLog使用
  • 原文地址:https://www.cnblogs.com/hemengjita/p/12747085.html
Copyright © 2011-2022 走看看