C++ getline()函数

C++ getline()函数

cin是一个对象,用于从用户那里获取输入,但不允许获取多行输入。要接受多行输入,我们使用getline()函数。这是一个预定义函数,定义在 <string.h> 头文件中,用于从输入流中接受一行或一个字符串,直到遇到分隔符为止。

getline()函数的语法

有两种表示函数的方式:

  • 第一种声明方式是传递三个参数。
istream& getline( istream& is, string& str, char delim );

以上语法包含三个参数,即 is, strdelim

其中,

is: 它是istream类的对象,定义了从哪里读取输入流。

str: 它是一个字符串对象,用于存储字符串。

delim:

返回值

此函数返回作为参数传递给函数的输入流对象。

  • 第二种声明的方法是传递两个参数。
istream& getline( istream& is, string& str );

上面的语法包含两个参数,即 isstr 。这个语法与上面的语法几乎相似;唯一的区别是它没有任何分隔符。

其中,

is: 它是istream类的对象,定义了从哪里读取输入流。

str: 它是一个字符串对象,其中存储了字符串。

返回值:

此函数还返回传递给函数的输入流。

让我们通过一个示例来理解。

首先,我们将看一个示例,其中我们不使用getline()函数来获取用户输入。

#include <iostream>
#include<string.h>
using namespace std;
int main()
{
string name; // variable declaration
std::cout << "Enter your name :" << std::endl;
cin>>name;
cout<<"\nHello "<<name;
return 0;
}

在上面的代码中,我们使用语句 cin>>name 来获取用户输入,即我们没有使用 getline() 函数获取用户输入。

输出

Enter your name : 
John Miller 
Hello John

在上面的输出中,我们将’John Miller’作为用户输入的名称,但只显示了’John’。因此,我们可以得出结论,当遇到空格字符时,cin并不考虑字符。

让我们通过使用getline()函数来解决上述问题。

#include <iostream>
#include<string.h>
using namespace std;
int main()
{
string name; // variable declaration.
std::cout << "Enter your name :" << std::endl;
getline(cin,name); // implementing a getline() function
cout<<"\nHello "<<name;
return 0;}

在上面的代码中,我们使用了 getline() 函数来接受字符,即使遇到空格字符也可以接受。

输出:

Enter your name : 
John Miller 
Hello John Miller

在上面的输出中,我们可以观察到,即John和Miller这两个词都被显示出来,这意味着getline()函数也考虑了空格字符后面的字符。

当我们不想读取空格后面的字符时,我们使用以下代码:

#include <iostream>
#include<string.h>
using namespace std;
int main()
{
string profile; // variable declaration
std::cout << "Enter your profile :" << std::endl;
getline(cin,profile,' '); // implementing getline() function with a delimiting character.
cout<<"\nProfile is :"<<profile;
}

在上面的代码中,我们使用getline()函数获取用户输入,但这次我们还在第三个参数中添加了定界字符(”)。在这里,定界字符是一个空格字符,表示在空格之后出现的字符将不被考虑。

输出

Enter your profile : 
Software Developer 
Profile is: Software 

获取字符数组

我们也可以为字符数组定义getline()函数,但它的语法与以前的不同。

语法

istream& getline(char* , int size);

在上面的语法中,有两个参数;一个是 char*** ,另一个是 **size

其中,

char*: 它是一个指向数组的字符指针。

Size: 它作为一个分隔符,定义了数组的大小,意味着输入不能超过这个大小。

通过一个示例来理解。

#include <iostream>
#include<string.h>
using namespace std;
int main()
{
char fruits[50]; // array declaration
cout<< "Enter your favorite fruit: ";
cin.getline(fruits, 50); // implementing getline() function
std::cout << "\nYour favorite fruit is :"<<fruits << std::endl;
return 0;
}

输出

Enter your favorite fruit: Watermelon 
Your favorite fruit is: Watermelon 

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程