【发布时间】:2016-07-19 11:50:43
【问题描述】:
我知道 Arduino 的 String.replace 函数使用 realloc()。
我的“替换”函数,它构建一个字符缓冲区,然后将其分配给输入字符串,在动态内存分配方面是否更好?
我知道我一开始不应该使用 String,但我暂时坚持使用它。
这是我的功能:
void replaceSubstr(String& in, String subin, String subout){
int s = in.indexOf(subin);
if(s > -1)
{
int a = in.length();
int b = subout.length();
int c = subin.length();
int len = (a + (b - c))+1;
char buff[len];
memcpy(buff, in.c_str(), s);
memcpy(&buff[s], subout.c_str(), b);
memcpy(&buff[s+b], in.substring(s+c).c_str(), a-(s+c));
buff[len-1] = '\0';
in = buff;
}
}
【问题讨论】:
-
不确定,但我认为某些编译器可能不支持
char buff[len];。 -
@Pierre:这不是 C++ 标准的一部分,自 C99 以来只有 C。
-
@Aconcagua 你读了吗?
-
@Aconcagua "C++ 中的可变长度数组?"