初始化时具有非恒定大小的字符数组

时间:2017-08-08 14:51:13

标签: c++ arrays initialization const

我需要在初始化非常量大小的C ++ char数组中。大小必须是非常量的,因为它是从函数生成的,不能使用向量,因为这个char数组将用于读取和写入文件。例如:

int i = functionToGetvalue();
unsigned char ch[i];
file1 >> ch;
file2 << ch;

1 个答案:

答案 0 :(得分:5)

前提是错误的。虽然有理由喜欢c样式数组(或std::array)而不是向量,但你的肯定不是那个。您当然可以使用std::vector来读取和写入文件,因为它保证在内存中是连续的。

示例:

std::vector<char> vec;
vec.resize(255);
ssize_t sz = read(fd, vec.data(), vec.size());

在原始示例中,您使用的是格式化流I / O,在这种情况下,std::string是最佳工具:

std::string str;
file1 >> str; // reads up to the next white space into str