首页 >后端开发 >C++ >为什么 `ifstream::open()` 不能与 `std::string` 参数一起使用?

为什么 `ifstream::open()` 不能与 `std::string` 参数一起使用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-08 04:29:10885浏览

Why Doesn't `ifstream::open()` Work with `std::string` Arguments?

没有 ifstream open() 的匹配函数

问题出现在代码片段中:

std::ifstream file;
file.open(name); // the error is here

Dev C 遇到错误“没有匹配的调用函数'std::basic_ifstream::open(std::string&)" 和“调用 'std::basic_ofstream::open(std::string&) 时没有匹配的函数”。出现这些错误的原因是 ifstream 中的 open() 函数需要 C 样式字符串作为参数,但代码提供了 std::string。

解决方案:

要解决此问题,请使用 c_str() 成员将 std::string 转换为 C 样式字符串函数:

file.open(name.c_str());

或者,您可以直接使用 C 风格字符串初始化 ifstream 对象:

std::ifstream file(name.c_str());

此外,考虑声明 loadNumbersFromFile() 如下:

std::vector<int> loadNumbersFromFile(const std::string& name)

此更改表示该函数不会修改其参数并防止不必要的复制。

以上是为什么 `ifstream::open()` 不能与 `std::string` 参数一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn