【发布时间】:2019-08-19 15:50:10
【问题描述】:
我想遍历文件流的字节。 我正在使用 ifstream 类。当您使用 read 函数时,它会将字符从流中复制到我在参数列表中指定的数组中。我有 3 个问题。
int length = 1024;
char buff[1024];
ifstream inf(fp, ios::in | ios::binary);
inf.read(buff, length);
我之所以不需要在“buff”之前使用“&”是因为第一个参数不是指针而是引用?
如果我有这个怎么办:
int length = 1024;
vector<char> buffer;
ifstream inf(fp, ios::in | ios::binary);
inf.read(&buff[0], length);
它实际上做的是它获取向量第一个元素的内存地址。 只有第一个的地址! 但它仍然可以访问整个数组,因为它将字符复制到其中。这怎么可能? 同样的事情是否也适用于以下内容?:
int length = 1024;
char* buffer[1024];
ifstream inf(fp, ios::in | ios::binary);
inf.read(&buff[0], length);
这里,如何访问数组元素?
【问题讨论】:
-
A
std::vector保证所有元素在内存中一个接一个(就像数组元素一样)。这就是知道第一个地址和计数足以填充向量的原因。
标签: c++ arrays pointers reference implicit-conversion