将字符串参数传递给 ifstream
Passing a string argument to ifstream
>我正在尝试将字符串参数从主函数传递给函数,然后将此收到的字符串参数传递给ifstream构造函数。我能够在函数中接收此字符串,但是当我将此参数传递给 ifstream 时,我收到一条错误消息:
调用"std::basic_ifstream::basic_ifstream(const string&("没有匹配函数 std::ifstream 文件(文件名(;
这是我的代码:
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;
}
变量文件名正在产生问题。如果我按原样传递它,它会给出错误。但是,如果我使用字符串而不是变量明确提及文件名,则代码可以正常工作。有人可以解释一下这里的问题到底是什么以及我该如何解决吗?
好的,所以问题是我试图在没有 C++11 标准的情况下仅使用 g++ "NameOfFile.cpp"进行编译。评论部分有2种可能的解决方案,如下所示:
- 在给出编译命令时使用 -std=c++11。生成的编译命令如下所示:
g++ -std=c++11 "NameOfFile.cpp"
- 正如 @Peter 所指出的,另一种解决方案是在字符串对象的末尾使用
c_str()
,因为 ifstream 不接受字符串作为 c++11 之前的参数,因此c_str()
用于显式转换为兼容格式。
下面是第二个解决方案的修改代码行:std::ifstream file(fileName.c_str());
感谢@Peter和@Holt的投入。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用指向成员的指针将成员函数作为参数传递
- 如何将参数传递给正在使用模板的类
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将部分流作为参数传递
- 我正在开发服务器,ip作为参数传递不起作用
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 将参数传递为"const"的奇怪效果
- 如何在 c++ 中将函数作为参数传递?
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 使用引用与指针将数组作为参数传递
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 将参数打包的参数传递到 std::queue 中,以便稍后使用不同的函数调用
- 为什么我不能将引用作为 std::async 的函数参数传递
- 将 ifstream 作为参数传递给类构造函数
- 将对 std::ifstream 的引用作为参数传递