使用参数字符串或char *的ifstream的std :: getline

时间:2013-12-14 21:54:21

标签: c++ string

我使用fstream来读取或写入文件。

我遇到了有关函数ifstream::getline的问题。当我包含<string>时,我可以将字符串作为参数传递给函数,否则,我必须传递char*作为参数。有人可以告诉我为什么吗?

根据函数的描述,据我所知,等待的正确参数应为char*string值是否在此处转换为char*

2 个答案:

答案 0 :(得分:2)

字符串类型未转换为char*。这就是.c_str()存在的原因。但是std :: string类型将接受char*作为初始化器。

这两种类型不向后兼容。 std::string会接受char*,但char*不接受std::string

答案 1 :(得分:2)

std::getline()有两个版本:

std::istream::getline(char*, char = '\n'); // member function of istream
std::getline(std::istream&, std::string&, char = '\n'); // free function in <string>

当包含std::istream的定义时,您显然会获得成员函数。但是,您需要添加<string>来获取std::string的定义,std::getline()的版本也附带{{1}}。