diff --git a/LSFramework/LSString.cpp b/LSFramework/LSString.cpp index 88275ce..7617e68 100644 --- a/LSFramework/LSString.cpp +++ b/LSFramework/LSString.cpp @@ -87,7 +87,7 @@ bool LSString::RemoveAt(size_t uiPos, size_t uiSize) size_t LSString::StringLength(const char* pChar) const { if (!pChar) return 0; - int iRet = 0; + size_t iRet = 0; while (*pChar != 0x0) { pChar++; @@ -97,39 +97,16 @@ size_t LSString::StringLength(const char* pChar) const } //----------------------------------------------------------------------------------------------------------------------------- -bool LSString::Contains(const char* pData) const +int LSString::Find(const char * pData, size_t uiOffset, size_t uiLength) const { - int iRet = 1; - size_t uiLength = StringLength(pData); - size_t uiOffset = 0; - - while (iRet != 0) + int iRet = -1; + while (uiOffset + uiLength <= m_uiLength) { - if (uiLength > m_uiLength || uiOffset > m_uiLength) break; iRet = memcmp(m_pData + uiOffset, pData, uiLength); + if (iRet == 0) break; uiOffset++; } - - return iRet == 0; -} - -//----------------------------------------------------------------------------------------------------------------------------- -size_t LSString::Find(const char* pData, size_t uiOffset) const -{ - size_t uiLength = StringLength(pData); - size_t uiCurrentOffset = uiOffset; - - for (int iRet = 1; iRet != 0; uiCurrentOffset++) - { - if (uiLength > m_uiLength || uiCurrentOffset > m_uiLength) - { - uiCurrentOffset = -1; - break; - } - iRet = memcmp(m_pData + uiCurrentOffset, pData, uiLength); - } - - return uiCurrentOffset; + return iRet; } //----------------------------------------------------------------------------------------------------------------------------- diff --git a/LSFramework/LSString.h b/LSFramework/LSString.h index 2268247..17d2d9b 100644 --- a/LSFramework/LSString.h +++ b/LSFramework/LSString.h @@ -67,36 +67,57 @@ public: #pragma endregion #pragma region Logic - void Assign(const char* pData); - void Insert(const char* pData, size_t uiPos); - bool RemoveAt(size_t uiPos, size_t uiSize); + #pragma endregion // - Utility #pragma region Conversion inline bool Contains(const LSString& sRhs) const { - return Contains(sRhs.m_pData); + return Find(sRhs) == 0; } - bool Contains(const std::string& sRhs) const + inline bool Contains(const std::string& sRhs) const { - return Contains(sRhs.c_str()); + return Find(sRhs) == 0; } + + inline bool Contains(const char* pData) const + { + return Find(pData) == 0; + } + //----------------------------------------------------------------------------------------------------------------------------- - inline size_t Find(const LSString& sRhs, size_t uiOffset) const + inline int Find(const LSString& sRhs, size_t uiOffset = 0) const { return Find(sRhs.m_pData, uiOffset); } - inline size_t Find(const std::string& sRhs, size_t uiOffset) const + inline int Find(const std::string& sRhs, size_t uiOffset = 0) const { return Find(sRhs.c_str(), uiOffset); } + + inline int Find(const char* pData, size_t uiOffset = 0) const + { + return Find(pData, uiOffset, StringLength(pData)); + } + + inline int Find(const LSString& sRhs, size_t uiOffset, size_t uiLength) const + { + return Find(sRhs.m_pData, uiOffset, uiLength); + } + inline int Find(const std::string& sRhs, size_t uiOffset, size_t uiLength) const + { + return Find(sRhs.c_str(), uiOffset, uiLength); + } #pragma endregion #pragma region Logic size_t StringLength(const char* pData) const; - bool Contains(const char* pData) const; - size_t Find(const char* pData, size_t uiOffset = 0) const; + void Assign(const char* pData); + void Insert(const char* pData, size_t uiPos); + bool RemoveAt(size_t uiPos, size_t uiSize); + int Find(const char* pData, size_t uiOffset, size_t uiLength) const; + //----------------------------------------------------------------------------------------------------------------------------- inline char At(size_t uiPos) const { diff --git a/LSFramework/main.cpp b/LSFramework/main.cpp index f7d5d4e..68c5c71 100644 --- a/LSFramework/main.cpp +++ b/LSFramework/main.cpp @@ -8,6 +8,13 @@ int main() { + printf("---LSString---\n"); + LSString s = "187"; + printf("Found: %d", s.Find("7")); + + return 0; + + // - STRING { printf("---LSString---\n");