指向字符串的指针,可用于动态分配字符串数组
pointer to string that can be used to dynamically allocate array of strings
我正在写一个项目,它是一个汽车停车场,我正在创建类。我需要满足某些要求。对于附件描述,我需要使用一个指向字符串的指针,该指针可用于动态分配具有精确附件数量的字符串数组。每个元素都包含附件的名称。
如果附件数为0,则不需要分配空间,设置指针为空
和指向双精度对象的指针,该指针可用于动态分配具有相同数量元素作为附件的双精度对象数组。每个元素将保存关联附件的成本,也就是说,元素0中的成本是元素0中附件的成本。如果附件数为零,则将指针设置为空,因为不需要分配空间。
这是我的课程到目前为止没有最后两个要求。Im难住了。
#ifndef VEHICLE_H
#define VEHICLE_H
class Vehicle
{
public:
Vehicle();
protected:
int vin_number;
string manufacturer;
string model;
string color;
double basecost;
int accessories;
string accessory_list;
private:
};
#endif // VEHICLE_H
请帮忙,这是一个在线课程,我已经在谷歌上搜索和阅读了几个小时。
您不应该动态分配string
数组。
如果你决定使用c++,你应该使用STL和集合。这样的:
std::list<std::string> accessory_list;
如果你决定使用C语言,一个动态分配的字符串列表应该是这样的:
//init
int accessory_count = 0;
int accessory_cap = 20;
char** accessory_list = calloc (sizeof(char*), accessorry_cap);
//add:
if (accessory_count==accessory_cap) {
accessory_cap += 20;
accessory_list = realloc (accessory_list, sizeof(char*)* accessorry_cap);
}
accessory_list[accessory_count++] = new_accessory.
如果你真的需要一个动态字符串数组,你可以这样做:
int accessory_arr_cap = 20;
string* accessory_arr = new string[accessory_arr_cap];
但是由于在这种情况下没有realloc的可能,如果您需要放大它,您将不得不将整个数组复制到一个新的数组
如果选项的成本和名称相关,则将它们放在struct中:
struct Option
{
char* Name;
double price;
}
那么你正在寻找的是一个集合,也许是一个std::vector<Option>
。我将留给你去谷歌std::vector,这是一个很好的学习练习。
顺便说一句,你一定要用c++吗?你可能会发现另一种语言,如c#或Java,更容易学习编程。
如果你不能使用向量,制作你自己的集合。我不会把代码贴出来,因为我觉得这是一个作业,但它们通常是这样工作的:
- 实例化一个默认大小为10的数组
- 保留一个max值的变量
- 保留一个变量,其中包含当前项目的数量(从0开始,可能称为count或其他)
- 当您添加指针时,将其放在元素'count'中并增加计数器
- 如果count = capacity,则分配一个2*capacity的新数组,将所有元素复制到其中,删除旧数组并将新数组分配给旧数组的变量。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 组合字符串不适用于 libCurl,C++
- 重载 std::字符串运算符+ 用于打印枚举名称
- 用于子集字符串的 Rcpp 函数
- C++ 虽然语句不适用于字符串和"or"
- C++ 用于在数组中打印字符串的随机数
- 用于拆分空格字符串的程序不起作用
- 用于从 ANSI 字符串转换为 std::basic_string <TCHAR>的正确函数声明
- C ++ txt 文件成数组逐行字符串和 int 用于纸牌游戏
- 为什么我的 if 语句不适用于 c++ 中的字符串?
- C++自定义流操纵器,用于更改流上的下一个字符串
- 如何在 python 包装中使用 unicode 字符串用于带有 cython 的 c++ 类?
- 将 Delphi 的字符串转换为 std::字符串用于C++
- C :将文本文件的内容存储在2D数组中,作为字符串(用于NULL终结器的麻烦?)
- 如何在 tchar 中添加格式化字符串(用于多个文件名等)
- Google协议缓冲区和std::字符串用于任意二进制数据