📜  cin.getline (1)

📅  最后修改于: 2023-12-03 14:40:05.630000             🧑  作者: Mango

介绍 cin.getline

简介

在 C++ 中,cin.getline 是一种用于读取字符串的函数。它可以从标准输入流(例如键盘)中读取一行字符串,并将其存储在一个字符数组中。这个函数的命名来源于其能够获取一行(line)文本的能力。cin.getline 函数与 cin >> 函数相似,但是前者可以读取含有空格的字符串,而后者遇到空格便停止读取。

语法

以下是 cin.getline 函数的语法:

cin.getline(char_array, array_size, delimiter);

在这里:

  • char_array 是一个字符数组,用于存储从输入流中读取的字符串。
  • array_sizechar_array 可以容纳字符串的最大长度(字符数量),包括空字符('\0')。
  • delimiter(可选)是一个字符,它表示输入终止的标志。默认情况下,这个标志是回车符('\n')。可以用其他字符来代替,例如 ';'
使用实例
#include <iostream>
using namespace std;

int main()
{
    char str[20];
    cout << "请输入您的名字:";
    cin.getline(str, 20);
    cout << "欢迎您," << str << "!" << endl;
    return 0;
}

输出:

请输入您的名字:张三
欢迎您,张三!

在这个例子中,程序要求用户输入自己的名字,而名字可以包含空格。为了读取带有空格的字符串,这里使用了 cin.getline 函数。cout 函数随后输出欢迎消息,其中 str 变量包含了用户输入的文本。

注意事项
  • getline 函数的第二个参数规定了字符数组的容量,函数不会为数组动态分配内存。因此,必须确认数组的大小足以存储预期的输入。
  • 如果输入行的字符数超过了数组的容量,超出部分将被丢弃。这可以导致不可预料的行为和 bug 在程序运行中难以调试和定位。
  • 默认的换行符会被 getline 函数从输入流中删除,因此如果你需要读取一行完整的输入,应该将它放在第一次 getline 后面并且不带参数。这将读取前一个 getline 函数直到换行符的所有文本。
  • 可选的第三个参数可以用来指定分隔符,换行符是默认的分隔符。
  • getline 函数避免了 cin >> 函数中空格字符的问题,可以读取包含空格的完整行。例如,如果输入为 “C++ 英雄联盟”,getline 函数将读取完整字符串。与之相反,cin >> 函数只会读取 “C++”。