C++查漏补缺——String(1)

看下面的程序(本程序是在C++ Primer Plus 第六版看的),
#include
#include
#include

int main(){

	using namespace std;
	char charr[20];
	string str;

	cout << "Legth of string in charr before input:"
		<< strlen(charr) << endl;
	cout <<" Length of string in str before input:"
		<< str.size() << endl;
	cout << "Enter a line of text:\n";
	cin.getline(charr,20);
	cout << "You entered:" << charr << endl;
	cout << "Enter another line of text: \n";
	getline(cin,str);
	cout << "You entered: " << str << endl;
	cout << "Length of string in charr afrer input :"
		<< strlen(charr) << endl;
	cout << "Length of string in str after inout:"
		<< str.size() << endl;

	return 0;
}


输出结果:

在输入之前数组charr的字符串长度为23,这是由于charr没有初始化,函数strlen()从数组第一个元素开始计算字节数,知道遇到空字符。

下面才是重点:

cin.getline(charr,20)这种句点表示法说明getline()是istream累的一个类方法,第一个参数是目标数组,第二个参数是数组长度,避免越界。

getline(cin,str)没有使用句点表示法,说明getline()不是类方法,第一个参数表示从哪里查找输入,第二个参数表示目标参数。这个函数式string类的友元函数

 

还有个现象时使用getline(cin,str),输入字符串后回车,还得在回车一次才能自行下面的程序。

你可能感兴趣的:(C++)