readFile方法应该将文件中的所有字符读取到一个字符串中并返回它。打开后,打开状态会打印到控制台。当我编译Debug-Build时,返回的字符串与文件的内容相匹配。但当我编译一个发布版本时,带有getline的代码行抛出了一个Debug Assertion fail,并显示了一个弹出窗口,其中包含以下文本:
调试断言失败!
文件: minkernel\crts\ucrt\src\appcrt\lowio\read.cpp
表达式:_osfile(fh) & FOPEN
代码:
#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;
}发布于 2020-03-17 17:36:02
我刚刚遇到了同样的问题,我在这里找到了一个解决方案:Dan Nissenbaum's answer
我所做的只是将运行时库链接模式更改为/MTd。您可以在项目设置->配置属性-> C/C++ ->代码生成->运行时库中对其进行更改
https://stackoverflow.com/questions/46758077
复制相似问题