可能重复:
Efficient way of reading a file into an std::vector<char>?
这可能是一个简单的问题,但我是C ++的新手,我无法弄清楚这一点。我正在尝试加载二进制文件并将每个字节加载到向量。这适用于小文件,但当我尝试读取大于410字节时,程序崩溃并说:
此应用程序已请求运行时将其终止 不寻常的方式请联系应用程序的支持团队获取更多信息 信息。
我在windows上使用code :: blocks。
这是代码:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
std::vector<char> vec;
std::ifstream file;
file.exceptions(
std::ifstream::badbit
| std::ifstream::failbit
| std::ifstream::eofbit);
file.open("file.bin");
file.seekg(0, std::ios::end);
std::streampos length(file.tellg());
if (length) {
file.seekg(0, std::ios::beg);
vec.resize(static_cast<std::size_t>(length));
file.read(&vec.front(), static_cast<std::size_t>(length));
}
int firstChar = static_cast<unsigned char>(vec[0]);
cout << firstChar <<endl;
return 0;
}
答案 0 :(得分:2)
我不确定您的代码有什么问题,但我刚刚用这段代码回答了类似的问题。
将字节读为unsigned char
:
ifstream infile;
infile.open("filename", ios::binary);
if (infile.fail())
{
//error
}
vector<unsigned char> bytes;
while (!infile.eof())
{
unsigned char byte;
infile >> byte;
if (infile.fail())
{
//error
break;
}
bytes.push_back(byte);
}
infile.close();