具有istream和参数C的函数

我希望我的程序使用下面的函数“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&)的参数1

错误2:’std :: istream&类型的引用的初始化无效来自’std :: string {aka std :: basic_string}类型的表达式的{aka std :: basic_istream&}’

错误3:从’std :: istream {aka std :: basic_istream}’到’const char *’的无效用户定义转换[-fpermissive]

无论如何我能解决它吗?该函数的参数确实必须保持“std :: istream& fileName”.

谢谢你的帮助.

解决方法:

std :: ifstream构造函数的第一个参数应该是一个字符串.你试图传递一个std :: istream.也许std :: istream包含您要读取的文件的名称,在这种情况下,您希望首先将名称提取到std :: string中.像这样的东西可能会起作用:

std::string fileName;
name >> fileName;
std::ifstream file(fileName, ios::in);
上一篇:C++ get file size


下一篇:尽管一切似乎都已到位,但ifstream文件仍无法打开(c)