将字符串参数传递给ifstream

时间:2018-06-18 12:04:18

标签: c++ c++11

我试图将一个字符串参数从main函数传递给一个函数,然后将这个接收到的字符串参数传递给ifstream构造函数。我能够在函数中接收此字符串,但是当我将此参数传递给ifstream时,我收到一条错误消息:

没有用于调用'std :: basic_ifstream :: basic_ifstream(const string&)'的匹配函数   std :: ifstream文件(fileName);

这是我的代码:

int** read_CSV(std::string const& fileName)
{

 //cout<<fileName<<"\n";//this works

 std::ifstream file(fileName);//problem

 //Rest of logic
}

主要功能:

int main()
{

 int** inputMatrix1 = read_CSV("inputData4_80-20_100x32.csv");

 return 0;
}

变量fileName正在创建问题。如果我按原样传递它,它会给出错误。但相反,如果我使用字符串而不是变量明确提到文件的名称,代码工作正常。有人可以解释这里究竟是什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:0)

好的,所以问题是我试图仅使用g ++“ NameOfFile.cpp”来在没有C ++ 11标准的情况下进行编译。在注释部分有两种可能的解决方案,它们如下:

  1. 在提供编译命令时使用-std = c ++ 11。生成的编译命令如下所示: g++ -std=c++11 "NameOfFile.cpp"
  2. @Peter指出的另一种解决方案是在字符串对象的末尾使用c_str(),因为ifstream在c ++ 11之前不接受字符串作为参数,因此{{1 }}用于显式转换为兼容格式。

这是第二种解决方案的修改后的代码行: c_str()

感谢@Peter和@Holt的输入。