首页 > 后端开发 > C++ > 为什么我的 `ifstream::open()` 在 Dev-C 中失败并显示'无匹配函数”,但在 Visual Studio 中却不然?

为什么我的 `ifstream::open()` 在 Dev-C 中失败并显示'无匹配函数”,但在 Visual Studio 中却不然?

DDD
发布: 2024-12-03 00:26:11
原创
842 人浏览过

Why Does My `ifstream::open()` Fail with

理解“没有匹配的函数 - ifstream open() 错误”

在提供的 C 代码中,错误“没有调用的匹配函数” 'std::basic_ifstream::open(std::string&)' " 是由于尝试使用字符串文字作为打开文件而产生的 争论。使用 dev cpp 编译而不是在 VS 中编译时会出现此错误,指示特定于平台的行为。

解决错误

要解决错误,请修改文件打开行如下所示:

file.open(name.c_str());
登录后复制

或者,您可以使用构造函数来构造和打开文件Stream:

std::ifstream file(name.c_str());
登录后复制

在 C 11 及更高版本中,引入了使用 std::string 参数打开文件的支持。但是,dev cpp 使用的旧版本 C 不支持此功能。

其他修改

除了文件打开修复之外,还建议:

  • 将参数作为 const 引用传递给 loadNumbersFromFile() 使用std::string const& 表示它不会被函数修改。
  • 使用带有 numeric_limits::max() 值和分隔符 'n' 的ignore() 方法来跳过任何前导空格并从文件中读取数值。

以上是为什么我的 `ifstream::open()` 在 Dev-C 中失败并显示'无匹配函数”,但在 Visual Studio 中却不然?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板