深圳幻海软件技术有限公司 欢迎您!

【C++】getline函数用法

2023-06-25

cin在输入空格的时候会自动结束输入。相比之下,getline的优点就是在输入字符串的时候可以输入空格。与此同时也有很多种用法。用法一.getline()#include<iostream>getline(cin,temp,delim);12cin是标准输入流函数temp是用来存储字符的

cin在输入空格的时候会自动结束输入。相比之下,getline的优点就是在输入字符串的时候可以输入空格。与此同时也有很多种用法。

用法一.getline()

#include<iostream>
 getline(cin,temp,delim);
  • 1
  • 2
  • cin是标准输入流函数
  • temp是用来存储字符的变量名
  • delim是结束标志

此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。遇到换行符或者EOF结束,不读取换行符delim是自己设定的结束符

在使用getline读入一整行时,如果前面使用getchar()、cin这类读入了一个字母,但是不会读入后续换行\n符号或者空格的输入时,再接getline()就容易出现问题。

这是因为输入数字之后,敲回车,产生的换行符仍然滞留在输入流,接着就被getline(cin,s)给读进去了,此时的s=“\n”,所以实际上s只是读入了一个换行符\n。

而若是前面使用getline(),再又用getline()进行读入,此时不会发生问题。getline()中读入结束的回车后,结束符不放入缓存区,会将读入的\n直接去除,下一个输入前,缓冲区为空,并不会因为回车留下\n。

如果前面用了cin、getchar(),可以在后面使用一个getchar()吃掉接下来的换行。

举例

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

用法二.cin.getline()

#include<iostream>
getline(char * s,n);
getline(char * s,n,delim);
  • 1
  • 2
  • 3
  • s是一个字符数组,例如char name[100]
  • n是要读取的字符个数
  • delim是结束标志,默认为换行符

举例

#include <iostream> 
using namespace std;

int main () {
  char name[256]
 
  cout << "Please, enter your name: ";
  cin.getline (name,256);
  cout << name << endl;
 
  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意事项

getline()是string流的函数,只能用于string类型的输入操作。当你定义了一个string类型变量,只能用getline()来输入。

cin.getline是std流的函数,用于char类型的输入操作。当你定义了一个char类型变量,只能用cin/cin.getline()输入。

引用

getline函数介绍
C++ getline函数用法详解

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览48400 人正在系统学习中