符号なし文字のファイルをベクトルに読み込もうとしています。これを行うには、入力ファイルストリームを作成し、そのデータを文字列ストリームに読み込み、文字列ストリームの内容を使用してベクトルを初期化します。これを行うもっと良い方法がおそらくあります。既存のコードでは、特定のファイルを使用してセグメンテーション違反が発生します。イテレータでベクトルを初期化するC++
string file_name = "output/comp" + to_string(start_id) + ".xml";
if(!file_exists(file_name))
{
cout << "File could not be found." << endl;
return 0;
}
ifstream ifs(file_name);
stringstream ss;
ss << ifs.rdbuf();
ss >> noskipws;
vector<unsigned char> raw_data(ss.str().begin(), ss.str().end());
私はすべての必要なヘッダとusing
宣言を含んでおり、file_exists()
ファイルが存在するかどうかを示すブール値を返します。
私の質問は次のとおりです:上記のコードが間違っているのはなぜですか?同じ目標を正しく達成するための最良の方法は何ですか?
よう
istream_iterator
Sを用いてベクターに直接ファイルを読み込むことができますおそらく、ファイルオープンモードに 'binary'を追加する必要があります –