Possible Duplicate:
Efficient way of reading a file into an std::vector<char>?(C++)文件加載到一個載體
這可能是一個簡單的問題,但是我是新的C++,我可以不知道這一點。我正在嘗試加載一個二進制文件並將每個字節加載到一個向量中。這工作得很好用的一個小文件,但是當我嘗試讀取大於410個字節的程序崩潰並說:
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
我使用Windows代碼::塊。
這是代碼:
#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;
}
這已經問。 http://stackoverflow.com/questions/4761529/efficient-way-of-reading-a-file-into-an-stdvectorchar – andre
完美的作品。感謝您的鏈接! – Alden
順便說一句,如果文件爲空,並且因此您不調整矢量空間,則此'static_cast <無符號字符>(vec [0])'會使應用程序崩潰。 –