Skip to content
Update cpp authored by umaumax's avatar umaumax
...@@ -1860,6 +1860,7 @@ bool IsFileExist(const std::string &filename) { ...@@ -1860,6 +1860,7 @@ bool IsFileExist(const std::string &filename) {
* [c++ - How to read a binary file into a vector of unsigned chars - Stack Overflow]( https://stackoverflow.com/questions/15138353/how-to-read-a-binary-file-into-a-vector-of-unsigned-chars ) * [c++ - How to read a binary file into a vector of unsigned chars - Stack Overflow]( https://stackoverflow.com/questions/15138353/how-to-read-a-binary-file-into-a-vector-of-unsigned-chars )
* なぜか、`std::istream_iterator`を利用すると、ファイルの読み込みサイズが小さくなってしまう現象が発生した * なぜか、`std::istream_iterator`を利用すると、ファイルの読み込みサイズが小さくなってしまう現象が発生した
* 理由は`\n`をスキップして`std::vector`へ保存してしまうためである
* `std::istreambuf_iterator`には`uint8_t`は指定できない * `std::istreambuf_iterator`には`uint8_t`は指定できない
``` cpp ``` cpp
...@@ -1902,21 +1903,33 @@ std::vector<uint8_t> LoadFileBad_istream_iterator(std::string& filepath) { ...@@ -1902,21 +1903,33 @@ std::vector<uint8_t> LoadFileBad_istream_iterator(std::string& filepath) {
} }
int main(int argc, const char* argv[]) { int main(int argc, const char* argv[]) {
std::string filepath("./main"); std::string filepath("./main.cpp");
{ {
auto goodVec = LoadFileGood(filepath); auto goodVec = LoadFileGood(filepath);
std::cout << goodVec.size() << std::endl; std::cout << goodVec.size() << std::endl;
for (auto& v : goodVec) {
std::cout << v;
}
std::cout << std::endl;
} }
{ {
auto goodVec = LoadFileGood_istreambuf_iterator(filepath); auto goodVec = LoadFileGood_istreambuf_iterator(filepath);
std::cout << goodVec.size() << std::endl; std::cout << goodVec.size() << std::endl;
for (auto& v : goodVec) {
std::cout << v;
}
std::cout << std::endl;
} }
{ {
auto badVec = LoadFileBad_istream_iterator(filepath); auto badVec = LoadFileBad_istream_iterator(filepath);
std::cout << badVec.size() << std::endl; std::cout << badVec.size() << std::endl;
for (auto& v : badVec) {
std::cout << v;
}
std::cout << std::endl;
} }
return 0; return 0;
} }
... ...
......