#include <fstream>
#include <string>
#include <cassert>
long long GetFileSizeA(const std::string& file_path)
{
return std::ifstream
{
file_path, std::ios::ate
}.tellg();
}
long long GetFileSizeB(const std::string& file_path)
{
return std::ifstream
{
file_path, std::ios::ate | std::ios::binary
}.tellg();
}
int main()
{
auto a = GetFileSizeA("~/test.log");
auto b = GetFileSizeB("~/test.log");
assert(a == b); // always true?
}
Если файл ~/test.log
содержит много \r\n
последовательности, делает C++ стандартной гарантии GetFileSizeA
идентична GetFileSizeB
?Должен ли я открыть файл в режиме [ios :: binary], чтобы получить его размер?