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

std::getline for an ifstream, using parameter string or char *

本文关键字:字符串 参数 char getline 用于 ifstream std      更新时间:2023-10-16

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

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

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

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

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

> 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() .