これはおそらく簡単な質問ですが、私は 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;
}