wchar_t*replace_w(wchar_t* s1,wchar_t* s2,wchar_t* s3 =NULL){wchar_t* p,* from,* to,* begin = s1;int c1, c2, c3, c;//串长度及计数
c2 =wcslen(s2);
c3 =(s3 !=NULL)?wcslen(s3):0;if(c2 ==0)return s1;//注意要退出while(true)//替换所有出现的串{
c1 =wcslen(begin);
p =wcsstr(begin, s2);//出现位置if(p ==NULL)//没找到return s1;if(c2 > c3)//串往前移{
from = p + c2;
to = p + c3;
c = c1 - c2 + begin - p +1;while(c--)* to++=*from++;}elseif(c2 < c3)//串往后移{
from = begin + c1;
to = from - c2 + c3;
c = from - p - c2 +1;while(c--)* to--=*from--;}if(c3)//完成替换{
from = s3, to = p, c = c3;while(c--)* to++=*from++;}
begin = p + c3;//新的查找位置}}