我知道这种传统方式,
#include <fstream>
#include <string>
#include <cerrno>
#include <iostream>
int main()
{
std::ifstream in("file.txt", std::ios::in | std::ios::binary);
if (in)
{
std::string contents;
in.seekg(0, std::ios::end);
contents.resize((size_t)in.tellg()); // Allocate buffer
in.seekg(0, std::ios::beg);
// Read the file
in.read(&contents[0], contents.size());
// ... do something ..
// Close
in.close();
}
else
throw(errno);
}
为了检测它的ANSI还是UTF-8文件,我是否需要读取前三个字节以检查BOM是否匹配,或者是否有使用codecvt的C ++ 11更好的方法?如何使这种codecvt方法适用于整个文件?