c++ - 检索数组最干净的方法是什么?

标签 c++ arrays

我需要一个返回任意长度数据 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/

相关文章:

C:使用以指针为参数的 void 函数更改 char 数组的值

c++ - 在不使用 if...else 的情况下使用参数声明类对象

c++ - opencv中的视频数据

c++ - 存储结构的动态数组

c# - 'fixed' : working on memory location or object? 的内部工作

javascript - AngularJs - $http.get() 中的 Array.push() 产生有缺陷的数组

c++ - 这个短程序是合法的 C++ 吗?

c++ - unordered_map:查找一对 std::string 和一对 std::string_view

c++ - 传递接受 void * 的成员函数

C编程与输出混淆