由于一系列我无法控制的原因,我需要创建一个需要从 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/