为什么我必须在以下代码中声明命名变量file
?
#include <iostream>
#include <fstream>
using namespace std;
int main(int const argc, char const * const * const argv) {
string head1;
ifstream file {argv[1]};
getline (file, head1);
cout << head1 << endl;
}
如果我尝试
getline (ifstream(argv[1]), head1)
我得no known conversion for argument 1 from ‘std::ifstream {aka std::basic_ifstream<char>}’ to ‘std::basic_istream<char>&’
或类似(gcc 4.6,4.8或clang 3.3)。
我不明白,因为根据cplusplus.com有一个定义
istream& getline (istream&& is, string& str);
并且我不明白为什么无法进行转换(临时可以用作右值,而istream
是ifstream
的基类)。