首页 > 解决方案 > Mac 上的 getline(ifstream, string) 导致 EXC_BAD_ACCESS

问题描述

自从它出现以来,我一直是一名 C++ 开发人员。一切都在窗户上,我已经有 6 年没碰过它了。

现在我正在尝试在我的 Mac 上使用 VS Code 让一个旧的代码库工作。我将clang ++与c ++ 17一起使用。

这个问题很烦人;我看过许多其他具有相同问题的帖子,但问题似乎总是在代码中。

注意:此代码在 Windows 上使用 C++11 运行良好。

为简化起见,我复制了代码以在 main 的顶部执行。这是:

ifstream file("assets/textures/blocks.txt", ios::in);
if( file.is_open() ) {
    string s;
    getline(file, s);  // <-- This line causes the error.
    cout << s << endl;
}

由于此代码在其他地方工作,我假设我遇到了设置或环境问题,并且正在寻找有关检查内容的提示。

感谢您的任何帮助!

更新:

谢谢你。我将程序配对并尝试了一些事情。这是交易:

其他文件中的某些内容以某种方式破坏了流代码。我一无所知。

#include <iostream>
#include <istream>
using namespace std;

int main() // int argc, char** argv)
{
    cout << "Hello World" << endl;
}

我应该补充一点:这是一个 GLFW 3D 游戏引擎应用程序。除了最基本的文件读/写操作之外,它不会以任何方式子类化或与任何流交互。

标签: c++macosclangc++17ifstream

解决方案


推荐阅读