C++中getline函数多种定义的使用方法

getline()函数是一个相当常见的工具,用于从输入流中获取一行数据。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、新城网站维护、网站推广。

下面我们将详细说明C++中的getline()函数用法,以及在使用getline()函数作为while循环条件时需要注意的问题:

在C++中,getline函数本质上有两种形式:

第一种形式:作为iostream类的成员函数,需要在头文件中声明。

第二种形式:作为普通函数,也需要在头文件中声明。

第一种形式的getline()函数有两种重载形式:

1. istream& getline(char* s, streamsize n);

2. istream& getline(char* s, streamsize n, char delim);

这两种形式的作用都是从输入流中读取最多n个字符(包括终止字符),然后将它们保存在字符数组s中。即使在读取不满n个字符的情况下,如果遇到指定的delim字符或达到字符数限制,读取操作也会终止,而且delim字符不会被保存在s中。

#include 
// std::cin ;  std::cout ;  std::endl
int main()
{
	char name[256], wolds[256];
	std::cout << "Please input your name: ";
	std::cin.getline(name, 256);
	std::cout << "Please input your wolds: ";
	std::cin.getline(wolds, 256);
	std::cout << "The result is:   " << name << ", " << wolds << std::endl;
	std::cout << std::endl;
	return 0;
}

输入:Mr. Ling

You are fantastic!

输出:

Mr. Ling, You are fantastic!

通过字符数限制和指定终止字符进行修改的代码示例:

#include 
// std::cin ;  std::cout ;  std::endl

int main(){
	char name[6];

	std::cout << "Please input your name: ";

	std::cin.getline(name, 6, '#');

	std::cout << "The result is:   " << name << std::ends;

	std::cout << std::endl;//学习交流群:558970390

	return 0;
}

输入: //streamsize限定,截断输出 wonderful
输出:wonde

输入: //所设置的结束标识符,截断输出 won#derful
输出:won

第二种方法:在C++中的getline函数具有四种不同的载入形式:

istream& getline (istream& 输入流, string& 字符串, char 分隔符);

istream& getline (istream&& 输入流, string& 字符串, char 分隔符);

istream& getline (istream& 输入流, string& 字符串);

istream& getline (istream&& 输入流, string& 字符串);

这些函数的用法与第一种方法类似,但是它们接受一个输入流作为参数,将读取的内容存储在字符串类型的字符串中。

函数参数的解释:

输入流:表示一个输入流,例如cin。

字符串:这是一个字符串类型的引用,用于保存从输入流中读取的文本。

分隔符:这是一个字符类型的变量,用于指定何时终止读取;如果未自定义分隔符,函数将在遇到换行符'\n'时终止读取。

以下是一个示例代码:

#include 
#include 
int main() {
	std::string name;
	std::cout << "Please input your name: ";
	std::getline(std::cin, name);
	std::cout << "Welcome to here!" << std::ends << name << std::endl;
	std::cout << std::endl;
	return 0;
}

在输入数据时,只有在遇到换行符或文件结束时,才会停止接受输入。

文件结束(EOF)是C语言中用于区分有效数据和输入结束的特殊标志。EOF的输入方式取决于操作系统,例如在Windows下是使用Ctrl+Z,在Linux/Unix下是使用Ctrl+D。

需要注意的是,getline()函数并非C库函数,而是C++库函数。它会在以下情况下终止读取并生成当前字符串:

1. 达到文件末尾。

2. 遇到指定的定界符(默认定界符是换行符,所以遇到换行符时会返回)。

3. 输入达到最大限制。

在下面的示例代码中,我们使用getline()函数在while循环中作为条件判断,实现逐行读取并输出:

#include 
#include 
using namespace std;
int main() {
string line;
while (getline(cin, line))
cout << line << endl;
return 0;
}
```

大家可能会发觉,在运行时,通常的输入方式都无法中断循环,有时甚至可能出现难以理解的错误。那么,究竟是什么原因导致了这种情况呢?接下来我们来详细分析一下:

getline()函数的定义如下:istream& getline(istream & is, string & str, char delim);

在这个语句中,while循环的判断条件实际上是关于cin(标准输入流)的状态,也就是判断当前是否存在有效的输入数据流。

值得注意的是,输入流是一个对象,我们在判断时考虑的是这个流返回的状态。因此,在正常情况下,无论你如何输入,都无法跳出这个循环。

有些人可能会错误地认为while循环的判断条件是关于"line"(即字符串line是否为空)的,试图通过输入回车来中断循环,但却发现这并不奏效。

事实上,回车和设置的分隔符都可以用来终止getline()函数的读取操作。然而,while循环的判断条件实际上是在判断getline()函数的输入流是否有效。

新闻名称:C++中getline函数多种定义的使用方法
URL地址:http://www.shufengxianlan.com/qtweb/news5/554455.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联