c++中getline的用法

功能:读入一行数据。

c++中有2种getline函数,一种在头文件 <istream> 中,是istream类的成员函数;另一种是在头文件 <string> 中,是普通函数。

1.在头文件 <istream> 的getline函数
两种重载形式:

istream& getline (char* s, streamsize n );//读取最多n个字符保存在s对应的数组中,即使大小不够n,
istream& getline (char* s, streamsize n, char delim ); //读取最多n个字符保存在s对应的数组中,遇到delim,或者读完一行,或字数达到限制则终止

特别说明: 最多读取n个字符中结束字符算一位。

例子代码:

// istream::getline example
#include <iostream>     // std::cin, std::cout

int main () {
  char name[256], title[256];

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

  std::cout << "Please, enter your favourite movie: ";
  std::cin.getline (title,256);

  std::cout << name << "'s favourite movie is " << title;

  return 0;
}

通过字数限制修改的代码:


通过设置终止字符使用getline函数的代码:


关于这个函数的2点疑问:

第一点,当定义一个小的数组,输入的时候要求输入的长度超出数组长度,输出的时候会输出全部的值。

#include<iostream>
int main()
{
	char name[5];
	std::cin.getline(name,25);
	std::cout<<name<<std::endl;


	return 0;
} 

结果:



第二点,代码如下

// istream::getline example
#include <iostream>     // std::cin, std::cout

int main () {
  char name[6], title[256];

  std::cout << "Please, enter your name: ";
  std::cin.getline (name,4);
  //代码通过字数限制存入数组后就不再运行11-12行代码,而是直接16行 

  std::cout << "Please, enter your favourite movie: ";
  std::cin.getline (title,256,'#');
	
	
  std::cout<<std::endl;	
  std::cout << name << " " << title;

  return 0;
}


2.在头文件<string>中的getline函数

(1)
istream& getline (istream&  is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
(2)
istream& getline (istream&  is, string& str);
istream& getline (istream&& is, string& str);

说明:

  • is:表示一个输入流,例如 cin。
  • str:用来存储输入流中的信息
  • delim:自定义结束字符,默认是   '\n '

例子代码:

#include<iostream>
#include<string>
int main()
{
	std::string name; //这里定义的是string类型,而不是char
	std::getline(std::cin,name);
	std::cout<<name<<std::endl;
	
	return 0;
} 

getline在while语句中作为判定条件:

  • 不设置终止符
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string name;
	while(getline(cin,name))
	{
		cout<<name<<endl;
	}
	return 0;
} 
  • 使用终止符的while语句(当输入  ' \n ' 也不受影响)
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string name;
	while(getline(cin,name,'#'))
	{
		cout<<"输出结果:"<<endl;
		cout<<name<<endl;
	}
	
	
	return 0;
} 

结果:



参考链接:

1.istream中的getline

2.string头文件中的getline

  • 37
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C++getline()函数用于从输入流读取一文本。它有两种用法: 1. istream& getline (istream& is, string& str, char delim); 这是istream类的成员函数,它从输入流is读取字符并将其存储在字符串str,直到遇到定界符delim(默认为'\n')或到达文件末尾。它返回输入流is的引用。 例如,以下代码从标准输入读取一行文本并将其存储在字符串str,直到遇到换行符: ```c++ #include <iostream> #include <string> using namespace std; int main() { string str; cout << "Enter a line of text: "; getline(cin, str); cout << "You entered: " << str << endl; return 0; } ``` 2. istream& getline (istream& is, string& str); 这也是istream类的成员函数,它从输入流is读取字符并将其存储在字符串str,直到遇到换行符或到达文件末尾。它返回输入流is的引用。 例如,以下代码从标准输入读取一行文本并将其存储在字符串str,直到遇到换行符: ```c++ #include <iostream> #include <string> using namespace std; int main() { string str; cout << "Enter a line of text: "; getline(cin, str); cout << "You entered: " << str << endl; return 0; } ``` 注意事项: 1. getline()函数读取的文本不包括定界符。 2. getline()函数读取的文本可以为空。 3. getline()函数读取的文本长度不能超过字符串的最大长度。 4. getline()函数可以与文件流一起使用,以从文件读取文本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值