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

C++ 检索数组最干净的方法是什么?,c++,arrays,C++,Arrays,我需要一个返回任意长度的数据块(char*)的函数。函数的调用者需要数组和数组的大小。该数组可以在函数内部动态分配,也可以作为参数传递。有多种方法可以实现相同的结果。现在我想知道什么是C++中最干净的方法。下面我将举例说明 返回数组,修改长度(作为参考): 返回长度,修改数组(作为参考): 返回成功代码,修改数组和长度(作为参考) 填充提供的数组,返回完整长度(可能无法获取所有数据): P>可能有更多的可能性来做这件事,但是在C++中,什么被认为是最干净的方式?< p>你有几个选项。正如评论家

我需要一个返回任意长度的数据块(char*)的函数。函数的调用者需要数组和数组的大小。该数组可以在函数内部动态分配,也可以作为参数传递。有多种方法可以实现相同的结果。现在我想知道什么是C++中最干净的方法。下面我将举例说明

返回数组,修改长度(作为参考):

返回长度,修改数组(作为参考):

返回成功代码,修改数组和长度(作为参考)

填充提供的数组,返回完整长度(可能无法获取所有数据):


<> P>可能有更多的可能性来做这件事,但是在C++中,什么被认为是最干净的方式?

< p>你有几个选项。正如评论家提到的,大多数C++方式是使用标准容器。这就是他们在那里的目的。通过这种方式,您还可以避免手动
new
ing数据导致的潜在内存泄漏

std::vector<char> getData() {
  std::vector<char> res;
  // fill vector with data of your choosing using push_back etc.
  return res;
}
std::vector getData(){
std::向量res;
//使用push_back等工具,用您选择的数据填充向量。
返回res;
}
如果必须使用c样式数组,另一个选项是使用新的
array\u视图
类,该类作为GSL(指南支持库)下CppCoreGuidelines项目的一部分发布

见:

以及:


但是,我建议您坚持使用c样式数组,除非您有很好的理由(例如大量的遗留代码库或与关键的、不可更新的库进行互操作)。

您有几个选择。正如评论家提到的,大多数C++方式是使用标准容器。这就是他们在那里的目的。通过这种方式,您还可以避免手动
new
ing数据导致的潜在内存泄漏

std::vector<char> getData() {
  std::vector<char> res;
  // fill vector with data of your choosing using push_back etc.
  return res;
}
std::vector getData(){
std::向量res;
//使用push_back等工具,用您选择的数据填充向量。
返回res;
}
如果必须使用c样式数组,另一个选项是使用新的
array\u视图
类,该类作为GSL(指南支持库)下CppCoreGuidelines项目的一部分发布

见:

以及:


但是,我建议您坚持使用c样式数组,除非您有很好的理由(例如大量的遗留代码库或与关键的、不可更新的库进行互操作)。

您有几个选择。正如评论家提到的,大多数C++方式是使用标准容器。这就是他们在那里的目的。通过这种方式,您还可以避免手动
new
ing数据导致的潜在内存泄漏

std::vector<char> getData() {
  std::vector<char> res;
  // fill vector with data of your choosing using push_back etc.
  return res;
}
std::vector getData(){
std::向量res;
//使用push_back等工具,用您选择的数据填充向量。
返回res;
}
如果必须使用c样式数组,另一个选项是使用新的
array\u视图
类,该类作为GSL(指南支持库)下CppCoreGuidelines项目的一部分发布

见:

以及:


但是,我建议您坚持使用c样式数组,除非您有很好的理由(例如大量的遗留代码库或与关键的、不可更新的库进行互操作)。

您有几个选择。正如评论家提到的,大多数C++方式是使用标准容器。这就是他们在那里的目的。通过这种方式,您还可以避免手动
new
ing数据导致的潜在内存泄漏

std::vector<char> getData() {
  std::vector<char> res;
  // fill vector with data of your choosing using push_back etc.
  return res;
}
std::vector getData(){
std::向量res;
//使用push_back等工具,用您选择的数据填充向量。
返回res;
}
如果必须使用c样式数组,另一个选项是使用新的
array\u视图
类,该类作为GSL(指南支持库)下CppCoreGuidelines项目的一部分发布

见:

以及:


但是,我建议您坚持使用c样式数组,除非您有很好的理由(例如大量的遗留代码库或与关键的、不可更新的库进行互操作)。

它们都没有。如果你使用C++,而不是C,那么继续向前,利用它提供的语义。
您确实想要使用,特别是
std::vector
。不要玩你自己的或处理C风格的东西,这是浪费时间。

没有一个。如果你使用C++,而不是C,那么继续向前,利用它提供的语义。
您确实想要使用,特别是
std::vector
。不要玩你自己的或处理C风格的东西,这是浪费时间。

没有一个。如果你使用C++,而不是C,那么继续向前,利用它提供的语义。
您确实想要使用,特别是
std::vector
。不要玩你自己的或处理C风格的东西,这是浪费时间。

没有一个。如果你使用C++,而不是C,那么继续向前,利用它提供的语义。
您确实想要使用,特别是
std::vector
。不要玩你自己的或处理C风格的东西,这是浪费时间。

最干净的方法可能是使用
std::vector
而不是c样式数组。最干净的方法是使用
std::vector
并按值返回。最干净的方法可能是使用
std::vector
而不是c样式数组。最干净的方法是使用
std::vector
并通过值。最干净的方法可能是使用
std::vector
而不是c样式数组。最干净的方法是使用
std::vector
并按值返回。最干净的方法可能是使用
std::vector
而不是c样式数组。最干净的方法是使用
std::vector
并按值返回。
std::vector<char> getData() {
  std::vector<char> res;
  // fill vector with data of your choosing using push_back etc.
  return res;
}