我使用fstream
来读取或写入文件。
我遇到了有关函数ifstream::getline
的问题。当我包含<string>
时,我可以将字符串作为参数传递给函数,否则,我必须传递char*
作为参数。有人可以告诉我为什么吗?
根据函数的描述,据我所知,等待的正确参数应为char*
。 string
值是否在此处转换为char*
?
答案 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}}。