我需要一个返回任意长度数据 block (char *) 的函数。函数的调用者需要数组和数组的大小。这个数组可以在函数内部动态分配,或者作为参数传递。有多种方法可以达到相同的结果。现在我想知道在 C++ 中什么被认为是“最干净”的方式。下面我将举例说明。
返回数组,修改长度(引用):
char *getData( int &length ) {
length = // set length
char *data = new char[ length ];
// fill data here
return data;
}
返回长度,修改数组(引用):
int getData( char * &data ) {
int length = // set length
data = new char[ length ];
// fill data here
return length;
}
返回成功码,同时修改数组和长度(引用)
bool getData( int &length, char * &data ) {
int length = // set length
data = new char[ length ];
// fill data here
return true; // Successful
}
填充提供的数组,返回完整长度(可能无法获取所有数据):
int getData( char *data, int maxLength ) {
int length = // set length
// fill data here, to max size of min( length, maxLength )
return length;
}
甚至可能有更多的可能性来做到这一点,但在 C++ 中,什么被认为是“最干净”的做法?
最佳答案
没有之一。如果您使用的是 C++,而不仅仅是 C,请继续并利用它提供的语义。
你真的很想用 std::vector
,特别是 std::vector<char>
.不要自己动手或处理 C 风格的东西,那是浪费时间。
关于c++ - 检索数组最干净的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32806454/