avr39-ripe

cstyleString

May 6th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int strlenM(const char* str)
  4. {
  5.     size_t len = 0;
  6.     for (; str[len]; len++);
  7.     return len;
  8. }
  9.  
  10. char* strdupM(const char* src, char* dst)
  11. {
  12.     size_t i = 0;
  13.     for (; src[i]; dst[i] = src[i], i++); dst[i++] = 0;
  14.     return dst;
  15. }
  16.  
  17. char* strndupM(const char* src, char* dst, int size)
  18. {
  19.     size_t i = 0;
  20.     for (; src[i] && i < size-1; dst[i] = src[i], i++); dst[i++] = 0;
  21.     return dst;
  22. }
  23.  
  24.  
  25. char* strcatM(char* src, const char* dst)
  26. {
  27.     size_t i = strlen(src);
  28.     size_t j = 0;
  29.     for (; dst[j]; src[i] = dst[j], i++, j++); src[i++] = 0;
  30.     return src;
  31. }
  32.  
  33. char* strncatM(char* src, const char* dst, size_t size)
  34. {
  35.     size_t i = strlen(src);
  36.     size_t j = 0;
  37.     for (; dst[j] && i < size - 1; src[i] = dst[j], i++, j++); src[i++] = 0;
  38.     return src;
  39. }
  40.  
  41. int strstrM(const char* str, const char* search)
  42. {
  43.     size_t searchSize = strlenM(search);
  44.     size_t strSize = strlenM(str);
  45.  
  46.     for (size_t strIdx=0; strIdx < strSize; strIdx++)
  47.     {
  48.         for (size_t searchIdx = 0, foundCnt = 0, tmpIdx = strIdx; str[tmpIdx] == search[searchIdx] and searchIdx < searchSize; searchIdx++, tmpIdx++)
  49.         {
  50.                 if (++foundCnt == searchSize) { return strIdx; }
  51.         }
  52.     }
  53.     return -1;
  54. }
  55.  
  56. template <typename T, int size> void print(T* arr)
  57. {
  58.     std::cout << "Size is: " << size << " " << arr << std::endl;
  59. }
  60.  
  61. int main()
  62. {
  63.     char str[20] = "Hello, World!";
  64.     char* str1 = new char[strlenM(str)-6];
  65.     std::cout <<strlenM(str) << " " << strndupM(str, str1, strlenM(str) - 6) << std::endl;
  66.     delete[] str1;
  67.     char str3[100] ="";
  68.     char str4[] = "world!!!! :) Oh!";
  69.     std::cout << strncatM(str3, str4, sizeof(str3)) << std::endl;
  70.     std::cout << strncatM(str3, " Hehe! addition:)!", sizeof(str3)) << std::endl;
  71.  
  72.     std::cout << strstrM("Hello, wor ld in sun", " in") << std::endl;
  73.  
  74.     std::cin >> str3;
  75.     std::cout <<"Simply CIN:" << str3 << std::endl;
  76.     std::cin.ignore();
  77.     std::cin.getline(str3, 200);
  78.     print<char,10>(str3);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment