私はArduinoのString.replace関数がrealloc()を使用していることを知っています。String.replace()と動的メモリ
私の「置換」機能は、charバッファを作成し、それを動的メモリ割り当ての点ではより良い入力文字列に割り当てますか?
私は最初に文字列を使用するべきではないことを知っていますが、当面はそれに固執しています。
これは私の関数である:
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型のバフ[lenは];'いくつかのコンパイラでサポートされない場合があります。 – Pierre
http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c – manuell
@Pierre:これはC++標準の一部ではなく、C99以降のCのみです。 – Aconcagua