我需要在初始化非常量大小时使用的C++ char数组。大小必须是非常量,因为它是从函数生成的,并且不能使用向量,因此此char数组将用于读取和写入文件。例如:初始化时非常量大小的char数组
int i = functionToGetvalue();
unsigned char ch[i];
file1 >> ch;
file2 << ch;
我需要在初始化非常量大小时使用的C++ char数组。大小必须是非常量,因为它是从函数生成的,并且不能使用向量,因此此char数组将用于读取和写入文件。例如:初始化时非常量大小的char数组
int i = functionToGetvalue();
unsigned char ch[i];
file1 >> ch;
file2 << ch;
前提是错误的。虽然有理由更喜欢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
你不能做到这一点像那样。你将需要使用'new'(并且不要忘记在完成后删除[]') – litelite
“不能使用vector,因此这个char数组将用于读写文件。” - 你可以用矢量或字符串来做到这一点。 –
'functionToGetvalue'做什么?你可能会把它标记为“constexpr”。 – Rakete1111