我试图将一个字符串参数从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正在创建问题。如果我按原样传递它,它会给出错误。但相反,如果我使用字符串而不是变量明确提到文件的名称,代码工作正常。有人可以解释这里究竟是什么问题以及如何解决它?
答案 0 :(得分:0)
好的,所以问题是我试图仅使用g ++“ NameOfFile.cpp”来在没有C ++ 11标准的情况下进行编译。在注释部分有两种可能的解决方案,它们如下:
g++ -std=c++11 "NameOfFile.cpp"
c_str()
,因为ifstream在c ++ 11之前不接受字符串作为参数,因此{{1 }}用于显式转换为兼容格式。这是第二种解决方案的修改后的代码行:
c_str()
感谢@Peter和@Holt的输入。