1、两个函数虽然看上去名称相同都是getline,但它们却分属于不同的类中的成员函数。
cin.getline(charr,20);的getline是输入流对象的成员函数,即istream::getline,使用时需头文件#include <iostream>
getline(cin,str);的getline是string类对象的成员函数,即string::getline,使用时需头文件#include <string>,注意不是cstring
2、string类的getline(cin,str);中第一个参数要求是一个输入流对象的引用,即istream&,第二个参数则是一个string类的对象。这里cin就是C++内部定义的一个全局的输入流对象,即extern istream cin,str是你定义的string类对象。
3、之所以输入3行才开始输出,是因为第二个string类的getline函数,如果是在VC6.0下编译的,则必须敲两次回车,微软已证实这是VC6.0的一个Bug。因此加上第一个getline函数的输入,共需输入3行,多敲了一个空行。如果是在DEV C++、Code::Blocks、VC2005下编译该程序,则正常输入两行就可以了。所以说VC6.0对标准C++支持不好,建议学习时与其它编译器配合使用。
cin.getline(charr,20);的getline是输入流对象的成员函数,即istream::getline,使用时需头文件#include <iostream>
getline(cin,str);的getline是string类对象的成员函数,即string::getline,使用时需头文件#include <string>,注意不是cstring
2、string类的getline(cin,str);中第一个参数要求是一个输入流对象的引用,即istream&,第二个参数则是一个string类的对象。这里cin就是C++内部定义的一个全局的输入流对象,即extern istream cin,str是你定义的string类对象。
3、之所以输入3行才开始输出,是因为第二个string类的getline函数,如果是在VC6.0下编译的,则必须敲两次回车,微软已证实这是VC6.0的一个Bug。因此加上第一个getline函数的输入,共需输入3行,多敲了一个空行。如果是在DEV C++、Code::Blocks、VC2005下编译该程序,则正常输入两行就可以了。所以说VC6.0对标准C++支持不好,建议学习时与其它编译器配合使用。