반응형

[MFC] 문자열 바꾸기

 

 

void StringReplace(wchar_t* szTextOri, wchar_t* szOld, wchar_t* szNew, wchar_t* szRetValue, int nRetSize)
{
     int   i, j;
     int   nOld = 0, nNew = 0;
     wchar_t  szTmp[4096] = { 0, };
     wchar_t  szRet[4096] = { 0, };

     _wsetlocale(0, L"");

     i = 0;
     j = 0;
     nOld = wcslen(szOld);
     nNew = wcslen(szNew);
     wcscpy_s(szTmp, _countof(szTmp), szTextOri);
     while (true)
     {
          if (i >= wcslen(szTmp))
               break;

          if (_wcsnicmp(&szTmp[i], &szOld[0], nOld) == 0)
          {
               wmemcpy(&szRet[j], &szNew[0], nNew);
               j = j + nNew;
               i = i + nOld;
          }
          else
          {
               wmemcpy(&szRet[j], &szTmp[i], 1);
               i++;
               j++;
          }
     }

     wcscpy_s(szRetValue, nRetSize, szRet);
}

728x90
반응형