如何在C ++中读取带空格的字符串?

在本章中,我们将学习如何在C ++中读取带有空格的完整字符串?

要读取任何类型的值(例如整数,浮点数和字符),我们使用cin,cin是istream类的对象,它告诉编译器从输入设备读取值。

但是,在读取string的情况下,cin不能正常工作。

让我们使用cin读取字符串

#include <iostream>
using namespace std;

int main(){
	char name[100]={0};
	
	//读取名称
	cout<<"Enter your name: ";
	cin>>name;
	
	//打印名称
	cout<<"Name is: "<<name<<endl;
	
	return 0;
}

现在,考虑输出-1在这里,我给“ Vanka”(一个没有空格的名字)。

输出-1

Enter your name: Vanka
Name is: Vanka

“ Vanka”将存储到变量名中并成功打印。

现在,考虑输出-2在这里,我给“ Vanka Manikanth”(带空格的名字)。

输出-2

Enter your name: Vanka Manikanth
Name is: Vanka

在这种情况下,字符串将在找到的空格处终止,只有“ Vanka”会存储在变量名中。

现在,如何在C ++中读取带空格的字符串?

我们可以使用一个函数getline(),该函数可以读取字符串,直到找不到enter(返回键)为止。

使用cin.getline()读取带空格字符串

getline()是istream类的成员函数,用于读取带空格的字符串,以下是getline()函数的以下参数[了解更多有关std::istream::getline的信息]

语法:

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

char * s:存储字符串的字符指针(字符串)
streamsize n:读取字符串的最大字符数

考虑给定的程序

#include <iostream>
using namespace std;

int main(){
	char name[100]={0};
	
	//读取名称
	cout<<"Enter your name: ";
	cin.getline(name,100);
	
	//打印名称
	cout<<"Name is: "<<name<<endl;
	
	return 0;
}

考虑给定的输出;在这里,我给“ Mr.  Vanka Manikanth”(一个在单词之间包含两个空格的名称)。

输出结果

Enter your name: Mr. Vanka Manikanth
Name is: Mr. Vanka Manikanth

在此,完整的名称/字符串“ Mr. Vanka Manikanth”将存储在变量名称中。