在包含以下行的 C 代码中:
file.open(name);
常见错误是:
no matching function for call 'std::ifstream::open(std::string&)'
出现此问题是因为旧版本的 C(C 11 之前)不支持使用 std::string 参数打开文件。 open() 函数需要字符数组或 C 风格字符串。
要解决此错误,可以使用以下方法之一:
file.open(name.c_str());
std::ifstream file(name.c_str());
这种方法无需单独构造和
此外,为了确保 loadNumbersFromFile() 函数不会修改其参数,建议通过引用常量 std::string 来传递:
std::vector<int> loadNumbersFromFile(const std::string& name) { // ... }
以上是为什么 `ifstream::open(std::string)` 在旧 C 版本中失败?的详细内容。更多信息请关注PHP中文网其他相关文章!