确定C++数组的正确大小

Bla*_*de3 3 c++

我需要能够根据文件中的字节数设置数组的大小.

例如,我想这样做:

// Obtain the file size.
    fseek (fp, 0, SEEK_END);
    size_t file_size = ftell(fp);
    rewind(fp);

// Create the buffer to hold the file contents.
    char buff[file_size];
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个编译时错误,说缓冲区的大小必须是常量.

我怎么能做到这一点?

Joh*_*itb 10

使用矢量.

std::vector<char> buff(file_size);
Run Code Online (Sandbox Code Playgroud)

整个矢量首先自动填充'\ 0'.但是"失去"的表现可能并不明显.它当然更安全,更舒适.然后像通常的数组一样访问它.您甚至可以将指向数据的指针传递给传统C函数

legacy(&buff[0]); // valid!
Run Code Online (Sandbox Code Playgroud)

  • @Hans:可变长度数组是C99功能.但是,C++基于C89.所以它们不是C++特性. (3认同)