getline()的用法详解

用于输入一个带有空格的字符串或字符数组。

一、getline()的原型
istream& getline ( istream &is , string &str , char delim );

头文件:#include < string >

其中,istream &is 表示一个输入流,譬如cin;

string&str表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str什么的都可以);

char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。

举例:

#include 
using namespace std;
int main(){
	string line;
	cout << "please cin a line:";
	getline(cin,line,'#');
	cout << "The line you give is:" << line << endl;
}
输出结果为:please cin a line:You are the #best!
		   The line you give is:You are the 

需要注意的是如果在getline之前使用了cin >> ,则需要清除回车符的缓存(使用getchar().)

示例:

#include 
using namespace std;
int main()
{
    int n;
    string a, e;
    cin >> n;
    getchar();
    for (int i = 0; i < n; ++i){
        getline(cin, a);
        for (int j = 0; j < a.size(); ++j){
        	if (a[j] == 'T') e += a[j-2] - 'A' + '1';
		}
    }
        cout << e;
    return 0;
}

二、cin.getline()

此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为’\n’。其语法为:

cin.getline(字符指针(char*),字符个数N(int),结束符(char));

举例:

#include 
int main()
{
	char a[30];
   cout << "请输入一个字符串:" << endl;
   cin.getline(a, 10);//第10位存放字符串结束符'\0'
   for (int i = 0; i<10; i++) cout << "第"<< i + 1 << "个值为:" << a[i] << endl;
   return 0;
}


输入:1234567890123
输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符'\0'

变式:(二维数组输入)

#include 
using namespace std;
const int maxn = 105;
char a[maxn][maxn];
int main(){
	for (int i = 0; i < 20; i++) cin.getline(a[i], 21);//输入一个含有空格的字符数组 
	//注意cin.getline(a[i],21);读入的是a[i][0~19]位。
	return 0;
}

更多请参考:C++:cin、cin.getline()、getline()的用法

你可能感兴趣的:(C++面向对象程序设计,算法,图论,c++)