我想将二进制文件读入字节vector<int8_t>
的向量中。该函数不应该知道文件的编码/语言/等,我只想要原始字节。
我仔细阅读了this question和此excellent article的答案,由于我的文件不是很大,推荐的解决方案似乎是
std::ifstream in("file.txt", std::ios::binary);
auto ss = std::ostringstream{};
ss << in.rdbuf();
auto s = ss.str();
然后从s
创建一个向量。
但是,我不喜欢通过<{1}}读取原始字节的想法, 可识别区域设置,尤其是它的默认区域设置depends机器的设置。
我的担忧是否合法?此解决方案是否会在具有不同全局区域的不同计算机上产生不同的结我应该先拨打ostringstream
吗?我如何保证ss.imbue(std::locale::classic());
不会弄乱内容?或者以二进制模式打开文件本身是否保证?