c++如何选择文件大小作为数组大小



我不能使用文件大小作为数组大小,因为它应该是一个常量。但是我把它设为常数。

ifstream getsize(dump, ios::ate);
const int fsize = getsize.tellg(); // gets file size in constant variable
getsize.close();
byte dumpArr[fsize] // not correct
array<byte, fsize> dumpArr // also not correct
byte *dumpArr = new byte[fsize]; // correct, but I can't use dynamic array

我需要用文件大小创建std::数组。

您需要一个编译时常量要声明数组,你有两个选择:

  • 放弃创建数组的想法,使用std::vector代替:
    std::ifstream file("the_file");
    std::vector<std::uint8_t> content(std::istreambuf_iterator<char>(file),
    std::istreambuf_iterator<char>{});
    
  • 如果您想要读取的文件在您编译完程序后不会更改,那么将该文件作为构建系统的一部分。makefile示例:
    program: source.cpp filesize.h
    g++ -o program source.cpp
    filesize.h: the_file
    stat --printf '#pragma oncen#define FILESIZE %sULLn' the_file > header.h
    
    …并且在source.cpp中使用FILESIZE来声明你的数组。

相关内容

  • 没有找到相关文章

最新更新