首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取发布版本中的文件时调试断言失败

读取发布版本中的文件时调试断言失败
EN

Stack Overflow用户
提问于 2017-10-16 01:42:35
回答 1查看 785关注 0票数 2

readFile方法应该将文件中的所有字符读取到一个字符串中并返回它。打开后,打开状态会打印到控制台。当我编译Debug-Build时,返回的字符串与文件的内容相匹配。但当我编译一个发布版本时,带有getline的代码行抛出了一个Debug Assertion fail,并显示了一个弹出窗口,其中包含以下文本:

调试断言失败!

文件: minkernel\crts\ucrt\src\appcrt\lowio\read.cpp

表达式:_osfile(fh) & FOPEN

代码:

代码语言:javascript
复制
#include <string>
#include <iostream>
#include <fstream>

using namespace std;

string readFile(const string& fileName) {
    cout << '\'' << fileName << '\'' << endl;
    ifstream file{ fileName };

    cout << file.is_open() << endl;

    string str;
    string content;
    cout << "START" << endl;

    while (getline(file, str)) {
        cout << "READ" << endl;
        content += str;
        content.push_back('\n');
    }

    file.close();

    return content;
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-17 17:36:02

我刚刚遇到了同样的问题,我在这里找到了一个解决方案:Dan Nissenbaum's answer

我所做的只是将运行时库链接模式更改为/MTd。您可以在项目设置->配置属性-> C/C++ ->代码生成->运行时库中对其进行更改

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46758077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档