C++ getline()函数
cin是一个对象,用于从用户那里获取输入,但不允许获取多行输入。要接受多行输入,我们使用getline()函数。这是一个预定义函数,定义在 <string.h>
头文件中,用于从输入流中接受一行或一个字符串,直到遇到分隔符为止。
getline()函数的语法
有两种表示函数的方式:
- 第一种声明方式是传递三个参数。
istream& getline( istream& is, string& str, char delim );
以上语法包含三个参数,即 is, str 和 delim 。
其中,
is: 它是istream类的对象,定义了从哪里读取输入流。
str: 它是一个字符串对象,用于存储字符串。
delim:
返回值
此函数返回作为参数传递给函数的输入流对象。
- 第二种声明的方法是传递两个参数。
istream& getline( istream& is, string& str );
上面的语法包含两个参数,即 is 和 str 。这个语法与上面的语法几乎相似;唯一的区别是它没有任何分隔符。
其中,
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