【发布时间】:2020-11-27 15:04:21
【问题描述】:
我需要创建一个字符串数组,我可以在其中存储 3 或 5 个单词,例如 {"banana, peach, pear"} 或 {"orange", "pear", "silantro", "ginger", "普通话”}。
我很困惑是否应该创建一个字符串指针数组(根据数组 3 或 5 的大小动态分配内存),还是只创建一个静态分配内存为 5 的字符串数组。以及如何初始化它/将其设置为 null/在构造函数中使用它。
我不允许使用矢量。
当我声明一个大小为 5 的数组时,问题从默认构造函数开始。
我不知道如何将其设置为空...
// 字符串 multiple_fruits[5]
// multiple_fruits[] = { nullptr, };
所以我在这里使用了一个字符串指针数组,有没有更好的方法? 我究竟做错了什么??哈哈
//.h file
class Fruit {
char* single_fruit;
string* multiple_fruits;
int num_Fruits;
};
//.cpp file
Fruit::Fruit() {
single_fruit = nullptr;
multiple_fruits = nullptr;
num_Fruits = 0;
}
Fruit::Fruit(const char* singlefruit, string* multiplefruits, int numFruits) {
single_fruit = new char[strlen(singlefruit) + 1];
strcpy_s(single_fruit, strlen(singlefruit) + 1, singlefruit);
multiple_fruits = new string[numFruits];
for (int i = 0; i < numFruits; i++) {
multiple_fruits[i] = multiplefruits[i];
}
num_fruits = numFruits;
}
int main() {
Fruit A;
A("apple", {"banana", "peach", "pear"}, 3)
Fruit B;
B("lemon", {"orange", "pear", "silantro", "ginger", "mandarine"}, 5);
return 0;
}
【问题讨论】:
-
@TedLyngmo 哦,我只是想让它加粗,但现在我删除了**。一个 char 数组只能存储 1 个单词,但我需要创建一个数组来存储多个单词。我该怎么做?
-
为什么要声明一个
string指针数组?string* multiple_fruits[5]; -
是否允许使用
string?如果是,则将其用于single_truit。 -
@TedLyngmo 因为老实说我只熟悉 char 并且我不知道要创建什么大声笑...有更好的方法吗???
标签: c++ arrays string pointers