zoukankan      html  css  js  c++  java
  • cin.getline函数

    cin

    虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题。
    当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。

    例:
    // This program illustrates a problem that can occur if
    // cin is used to read character data into a string object.
    #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: ";
        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: Chicago
    Hello, John Doe
    You live in Chicago
    实际结果:
    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 的值。

    cin.getline()

    cin.getline 允许读取包含空格的字符串。它将继续读取,直到它读取至最大指定的字符数,或直到按下了回车键。

    此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为' '。

    这个函数有三个参数,其语法为:cin.getline(字符指针(char*),字符个数N(int),结束符(char));

    第一个参数为第一个读取的字符的位置,通常为数组名。

    第二个参数为读取的字符的个数。

    第三个参数是结束符,可以省略,省略则默认为回车键结束。

    例:
    // This program demonstrates cinT s getline function
    // to read a line of text into a C-string.
    #include <iostream>using namespace std;
    
    int main()
    {
        const int SIZE = 81;
        char sentence[SIZE];
        cout << "Enter a sentence: ";
        cin.getline (sentence, SIZE);
        cout << "You entered " << sentence << endl;
        return 0;
    }
    输出结果:
    Enter a sentence: To be, or not to be, that is the question.
    You entered To be, or not to be, that is the question.

    可以看到,使用cin.getline函数输入带有空格的字符串。

    在网络编程中,写一个简单的回射程序时,可以使用cin.getline来输入数据。

    #define MAX_LINE 10000
    char SendBuffer[MAX_LINE];
    cin.getline(SendBuffer, sizeof(SendBuffer));
  • 相关阅读:
    MySQL: MySQL数据学习专题
    安装Team Foundation Server 2012过程截图
    如果你喜欢一个程序员小伙
    ASP.net MVC: 一个开源的“留言系统”
    ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)
    Microsoft Visual Stadio 2012 Ultimate版安整过程安装体验
    win8全面开放民间下载地址!win8下载地址 win8下载链接
    【技术贴】解决右键没有新建文本文档|右键没有新建txt
    【技术贴】虚拟机网络上有重名的解决|虚拟机Net模式提示有重名
    【技术贴】利用myeclipse自动生成java类图|java源代码自动生成类图
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12509558.html
Copyright © 2011-2022 走看看