C++:getline()函数的学习

1.简介

在C++中,有两个getline 函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与istream& getline ( istream& is, string& str );另一个则是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );注意第二个getline是将读取的字符串存储在char数组中而不可以将该参数声明为string类型。

2.在string 类的getline() 函数用法

#include  <string>

①作用:
当用cin输入一个字符串时,读取到空格的时候就结束一次的读取了(如果没有用for循环输入的话),因此如果要输入一个带空格的字符串,并且将其赋值到一个字符串变量里的话,就只能用getline(cin,string)

②具体用法如下:
https://www.cnblogs.com/wkfvawl/p/11040760.html

易错点:
https://jingyan.baidu.com/article/09ea3ede5fd932c0aede393f.html

3.在istream类的getline()用法

#include <istream>

istream::getline() 函数

①原型:istream& getline (char* s, streamsize n, char delim )
提取一行的字符串,s 是存储数据的变量的名字,n为输入数据的长度,delim为结束的标志字符(遇到就结束,不理会数据有多长,可以不要)

**②作用:**可以读取输入的一行字符串,并且能读入空格字符,然后将其一个一个字符的存入到字符数组中

  char name[256];

cout << "Please, enter your name: ";
cin.getline (name,256);
cout << "Hell0, " << name;

如果是读取文件的还可以

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

int main()
{
	ifstream fin("data.txt");
	const int LINE_LENGTH = 100;
	char str[LINE_LENGTH];
	int count = 0;
	while (fin.getline(str, LINE_LENGTH))    // 逐行读取, 将行读入字符数组,遇到回车键结束一次读取,但是此时返回while的还不是0,当getline 读取到文件的最后一个数据读完了,然后读到空白符的时候,返回while 就是0了,所以中止while.第二个参数是指每行不超过这么多字符, 
	{
		cout << "Read from file: " << str << endl;//输出字符数组的数据,最后换行
		count++;
	}
        cout << count << endl;
        return 0;
}

注意!
①cin.getline()与getline()是不同的, getline()是在string 头文件里的,其的原型是istream& getline ( istream &is , string &str , char delim ),使用前必须包含头文件,其使用例子如下(同样,delim可不写,则默认为回车结束):

②当要读取一行的空格区分的字符串时,并且要一个一个读取并且存入字符串数组里时,直接用cin就好了

#include <iostream>
using namespace std;

int main()
{
   char a[10];
   for(int i=0;i<=9;i++)
   { 
      cin>>a[i];
   }
   for(int j=0;j<=9;j++)
   { 
      cout<<a[j]<<" ";
   }
   return 0;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值