c++ - C++ 中带有 malloc 的字符串数组

标签 c++ arrays string malloc void

由于一系列我无法控制的原因,我需要创建一个需要从 void* 指针引用的字符串数组。这个想法是遵循 C++ 中的以下模式:

void* TP = malloc(sizeof (double) * SS);
for (int i = 0; i < SS; i++) {
  ((double*) TP)[i] = IStringToDouble(Token[i]);
}

其中 Token 是一个 vector ,SS 是一个 int。现在,使用该模板,我虽然从类似的东西开始:

void* TP = malloc(sizeof (string) * SS);
for (int i = 0; i < SS; i++) {
  ((string*) TP)[i] = Token[i];
}

我知道这是非常错误的,但我尝试从它开始的所有修改都不起作用。

关于如何实现这一点有什么建议吗?可能吗?

我已经阅读了从 Google 或 StackOverflow 找到的所有关于 C++ 字符串数组的文档,但没有一个涉及从 void* 引用数组的问题。

最佳答案

您已经可以将任何指针转换为 void*。您不需要需要使用malloc,您不需要需要void*指针作为唯一指向对象的指针。

考虑到这一点,为什么不这样做呢?

string* TP = new string[SS];
for (int i = 0; i < SS; i++) {
    TP[i] = Token[i];
}

void *TP2 = TP;

甚至这样:

void *TP = &Token[0];

虽然,使用第二种方法,如果向Token中添加更多元素,指针将失效,通过该指针修改字符串将修改Token中的字符串(因为那是指针指向的地方)。

关于c++ - C++ 中带有 malloc 的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036732/

相关文章:

c++ - 按值将 shared_ptr 传递给 lambda 会泄漏内存

c++ - 无符号和整数之间的整数提升

c++ - 如何将两种类型的数据分配给一个变量?

c++ - iomanip 操作返回一个十六进制值

c++ - 为什么编译器会在某些优化级别警告未初始化的边迭代器?

c++ - 基类不完整的继承

python - 从给定的项目列表创建子列表

arrays - Swift:使用哪种集合类型来跟踪二维数组中的状态

c# - 为什么 String S =new string() 在 C# 中无效

javascript - 检查 JavaScript 字符串是否为 URL