fork download
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. char* makeString(const char* srcStr, const char* subStr, char delim)
  5. {
  6. size_t srcStrLength = std::strlen(srcStr);
  7. size_t subStrLength = std::strlen(subStr);
  8.  
  9. //тут типа создаем массив достаточной длины, хуемое,
  10. //чтобы уместить строку, которая в худшем варианте
  11. //будет полностью состоять из delim-символов
  12. char* resultStr = new char[srcStrLength + srcStrLength * subStrLength + 1];
  13.  
  14. size_t resultStrLength = 0;
  15.  
  16. for(size_t i = 0; i < srcStrLength; i++)
  17. {
  18. resultStr[resultStrLength] = srcStr[i];
  19. resultStrLength++;
  20.  
  21. if(srcStr[i] == delim)
  22. {
  23. std::strcpy(resultStr + resultStrLength, subStr);
  24. resultStrLength = resultStrLength + subStrLength;
  25. }
  26. }
  27.  
  28. resultStr[resultStrLength] = '\0';
  29.  
  30. return resultStr;
  31. }
  32.  
  33. int main() {
  34. const char* src = "abc*x*asd**as*e";
  35. const char* subStr = "12345";
  36. char delim = '*';
  37.  
  38. char* res = makeString(src, subStr, delim);
  39.  
  40. std::cout << "res = " << res << std::endl;
  41. return 0;
  42. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
res = abc*12345x*12345asd*12345*12345as*12345e