c++中如何在类初始化时用指针给字符串数组赋值
时间: 2024-05-08 22:14:45 浏览: 91
可以使用初始化列表或构造函数来给类中的字符串数组赋值。下面是一个示例代码:
```
#include <iostream>
#include <cstring>
class Test {
public:
Test(char** str) {
for(int i = 0; i < 3; i++) {
strcpy(strs[i], str[i]);
}
}
void print() {
for(int i = 0; i < 3; i++) {
std::cout << strs[i] << std::endl;
}
}
private:
char strs[3][20];
};
int main() {
char* str[3] = {"hello", "world", "test"};
Test t(str);
t.print();
return 0;
}
```
在上面的示例中,构造函数使用了指针来给类中的字符串数组赋值。在 `main()` 函数中,我们先定义一个字符串指针数组 `str` ,然后将其作为参数传递给类 `Test` 的构造函数来初始化类中的字符串数组。最后调用 `print()` 函数打印出字符串数组的值。
相关问题
如何给一个字符串指针数组赋值并打印出来
在C++中,你可以创建一个字符串指针数组,并通过初始化列表或动态分配内存的方式来给它赋值。这里是一个简单的例子:
```cpp
#include <iostream>
#include <string>
int main() {
// 定义一个大小为5的字符串指针数组
std::string* strArray[5];
// 使用初始化列表直接赋值
strArray[0] = new std::string("Hello");
strArray[1] = new std::string("World");
strArray[2] = new std::string("C++ Programming");
strArray[3] = new std::string("Arrays and Strings");
strArray[4] = new std::string("Practice");
// 打印数组中的字符串
for (int i = 0; i < 5; i++) {
std::cout << "Element at index " << i << ": " << *strArray[i] << std::endl;
}
// 记得释放动态分配的内存
for (std::string* ptr : strArray) {
delete ptr;
}
return 0;
}
```
在这个例子中,我们首先创建了`strArray`数组,然后分别为每个元素分配了新的字符串。接着遍历数组打印出每个元素的内容。最后别忘了在程序结束前删除这些动态分配的内存,以防止内存泄漏。
c++成员变量数组初始化赋值
在 C++ 中,成员变量数组的初始化赋值通常涉及到静态数组、动态数组或者是初始化列表。以下是三种常见情况:
1. **静态数组**:
```cpp
class MyClass {
public:
int array[5] = {0, 1, 2, 3, 4}; // 数组在类声明时已初始化
};
```
这里的数组已经在类定义时进行了初始化。
2. **动态数组**:
```cpp
class MyClass {
public:
std::vector<int> array; // 动态数组可以分配任意大小
MyClass() : array(5) { // 构造函数中初始化
for (int i = 0; i < 5; ++i)
array[i] = i;
}
};
```
这里在构造函数中动态创建并赋值。
3. **初始化列表**:
```cpp
class MyClass {
public:
int elements[] = {10, 20, 30, 40, 50}; // 初始化列表允许在类定义时一次性初始化
MyClass(int* values, int size)
: elements(values), nElements(size) {} // 接收指针和大小
private:
int* elements;
int nElements;
};
```
通过接收指针和大小来初始化部分元素。
阅读全文