功能与istream&参数C ++

时间:2014-01-31 23:41:17

标签: c++ function ifstream

我希望我的程序使用下面的函数“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”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

std::string fileName;
name >> fileName;
std::ifstream file(fileName, ios::in);