zoukankan      html  css  js  c++  java
  • C++ getline函数用法详解

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

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

    cin >> namel;

    可以输入 "Mark" 或 "Twain",但不能输入 "Mark Twain",因为 cin 不能输入包含嵌入空格的字符串。下面程序演示了这个问题:
    1. // This program illustrates a problem that can occur if
    2. // cin is used to read character data into a string object.
    3. #include <iostream>
    4. #include <string> // Header file needed to use string objects
    5. using namespace std;
    6.  
    7. int main()
    8. {
    9. string name;
    10. string city;
    11. cout << "Please enter your name: ";
    12. cin >> name;
    13. cout << "Enter the city you live in: ";
    14. cin >> city;
    15. cout << "Hello, " << name << endl;
    16. cout << "You live in " << city << endl;
    17. return 0;
    18. }

    程序输出结果:

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

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

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

    getline 函数如下所示:

    getline(cin, inputLine);

    其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变量的名称。下面的程序演示了 getline 函数的应用:
    1. // This program illustrates using the getline function
    2. //to read character data into a string object.
    3. #include <iostream>
    4. #include <string> // Header file needed to use string objects
    5. using namespace std;
    6.  
    7. int main()
    8. {
    9. string name;
    10. string city;
    11. cout << "Please enter your name: ";
    12. getline(cin, name);
    13. cout << "Enter the city you live in: ";
    14. getline(cin, city);
    15. cout << "Hello, " << name << endl;
    16. cout << "You live in " << city << endl;
    17. return 0;
    18. }

    程序输出结果:

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

    无欲则刚 关心则乱
  • 相关阅读:
    android入门教程(十六)之 使用Intent传递数据
    Android入门教程(十八)之ListView (二) (转)
    Android入门教程(十四)之ListView的应用 (转)
    Android入门教程(十七)之GridView(转自http://blog.csdn.net/hellogv/)
    (原创)Android入门教程(十五)之 Activity生命周期及其配置使用
    Android入门教程(十九)之ListView (三) (转)
    Android入门教程(十三)之自定义下拉菜单模式Spinner与setDropDownViewResource的应用(转)
    Android入门教程(十)之Menu功能菜单设计 (转)
    [vp]ARC059
    欧拉路学习笔记
  • 原文地址:https://www.cnblogs.com/xjyxp/p/11546060.html
Copyright © 2011-2022 走看看