stringManipulation.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include "stringManipulation.h"
  2. #include <cctype>
  3. namespace pika
  4. {
  5. void removeCharacters(char *dest, const char *source, const char *charsToRemove, size_t destSize)
  6. {
  7. int write = 0;
  8. for (int read = 0; source[read] != 0; read++)
  9. {
  10. if (findChar(charsToRemove, source[read]))
  11. {
  12. }
  13. else
  14. {
  15. dest[write] = source[read];
  16. write++;
  17. if (write >= destSize) { break; }
  18. }
  19. }
  20. }
  21. void toLower(char *dest, const char *source, size_t size)
  22. {
  23. for (int i = 0; i < size; i++)
  24. {
  25. if (dest[i] == 0) { break; }
  26. dest[i] = std::tolower(source[i]);
  27. }
  28. }
  29. void toUpper(char *dest, const char *source, size_t size)
  30. {
  31. for (int i = 0; i < size; i++)
  32. {
  33. if (dest[i] == 0) { break; }
  34. dest[i] = std::toupper(source[i]);
  35. }
  36. }
  37. bool findChar(const char *source, char c)
  38. {
  39. int i = 0;
  40. while (source[i] != 0)
  41. {
  42. if (source[i] == c)
  43. {
  44. return true;
  45. }
  46. i++;
  47. }
  48. return false;
  49. }
  50. size_t strlcpy(char *dst, const char *src, size_t size)
  51. {
  52. for (size_t i = 0; i < size-1; i++)
  53. {
  54. dst[i] = src[i];
  55. if (src[i] == '\0') { return i; }
  56. }
  57. dst[size - 1] = '\0';
  58. return size - 1;
  59. }
  60. size_t strlcpy(char *dst, const std::string &src, size_t size)
  61. {
  62. return strlcpy(dst, src.c_str(), size);
  63. }
  64. std::vector<std::string> split(const char *source, char c)
  65. {
  66. std::string s = "";
  67. std::vector<std::string> ret;
  68. for (int i = 0; source[i] != 0; i++)
  69. {
  70. if (source[i] == c)
  71. {
  72. if (s != "")
  73. {
  74. ret.push_back(s);
  75. }
  76. s = "";
  77. }
  78. else
  79. {
  80. s += source[i];
  81. }
  82. }
  83. if (s != "")
  84. {
  85. ret.push_back(s);
  86. }
  87. return ret;
  88. }
  89. }