我希望我的程序使用下面的函数“readFile”读取文件。我试图找出如何使用istream&调用函数。参数。该函数的目标是通过接收文件名作为参数来读取文件。
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;
bool readFile(std::istream& fileName); //error 1 this line
int main(void)
{
string fileName;
cout << "Enter the file name: ";
cin >> fileName;
readFile(fileName); //error 2 this line
}
bool readFile(std::istream& fileName)
{
ifstream file(fileName, ios::in); //error 3 this line
return true;
}
我得到的三个错误:
错误1:传递'bool readFile(std :: istream&amp;)
的参数1错误2:'std :: istream&amp;类型的引用的初始化无效来自'std :: string {aka std :: basic_string}
类型的表达式的{aka std :: basic_istream&amp;}'错误3:从'std :: istream {aka std :: basic_istream}'到'const char *'的无效用户定义转换[-fpermissive]
无论如何我可以解决它吗?该函数的参数实际上必须保持“std :: istream&amp; fileName”。
感谢您的帮助。
答案 0 :(得分:1)
std::ifstream
构造函数的第一个参数应该是一个字符串。你试图传递std::istream
。也许std::istream
包含您要阅读的文件的名称,在这种情况下,您希望首先将名称提取到std::string
。这样的事情可能有用:
std::string fileName;
name >> fileName;
std::ifstream file(fileName, ios::in);