c++ - 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;
}
由于此代码在其他地方工作,我假设我遇到了设置或环境问题,并且正在寻找有关检查内容的提示。
感谢您的任何帮助!
更新:
谢谢你。我将程序配对并尝试了一些事情。这是交易:
如果我将所有文件都保留为编译,但将 main.cpp 替换为以下代码,则 cout 行会生成相同的异常。
如果我剔除所有未使用的文件,则代码有效。
其他文件中的某些内容以某种方式破坏了流代码。我一无所知。
#include <iostream>
#include <istream>
using namespace std;
int main() // int argc, char** argv)
{
cout << "Hello World" << endl;
}
我应该补充一点:这是一个 GLFW 3D 游戏引擎应用程序。除了最基本的文件读/写操作之外,它不会以任何方式子类化或与任何流交互。
解决方案
推荐阅读
- xamarin - 为什么我在 iOS 中的 PhoneDialer.Open 中出现 FeatureNotSupported 异常,但在 Xamarin Forms 中的 Android 中工作正常?
- php - 如何在 Codeigniter 中获取特定的行数据
- wpf - 为 Web-API 和 WPF 客户端 APP 使用一个 AAD 应用注册
- python - 如何删除不在另一个数据框中的数据框行?
- python - 如何在 python manage.py 的 bash 脚本中输入提示
- python - 我如何将数据发送到电报?
- linkedin - AdCreativesV2 Batch GET API 返回 400 BAD REQUEST -“无法处理涉及多个路由实体的请求”
- flutter - 扩展超类型的 dart mixin,导致客户端类必须实现超类型的方法
- typescript - 没有宣布所有案件的歧视性工会?
- android - android 目前没有成功匹配