minor changes

This commit is contained in:
Luis Stanglmeier 2022-02-22 17:30:15 +01:00
parent e1c392819d
commit 226b562ee0
3 changed files with 44 additions and 39 deletions

View file

@ -87,7 +87,7 @@ bool LSString::RemoveAt(size_t uiPos, size_t uiSize)
size_t LSString::StringLength(const char* pChar) const size_t LSString::StringLength(const char* pChar) const
{ {
if (!pChar) return 0; if (!pChar) return 0;
int iRet = 0; size_t iRet = 0;
while (*pChar != 0x0) while (*pChar != 0x0)
{ {
pChar++; 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; int iRet = -1;
size_t uiLength = StringLength(pData); while (uiOffset + uiLength <= m_uiLength)
size_t uiOffset = 0;
while (iRet != 0)
{ {
if (uiLength > m_uiLength || uiOffset > m_uiLength) break;
iRet = memcmp(m_pData + uiOffset, pData, uiLength); iRet = memcmp(m_pData + uiOffset, pData, uiLength);
if (iRet == 0) break;
uiOffset++; uiOffset++;
} }
return iRet;
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;
} }
//----------------------------------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------------------------------

View file

@ -67,36 +67,57 @@ public:
#pragma endregion #pragma endregion
#pragma region Logic #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 #pragma endregion
// - Utility // - Utility
#pragma region Conversion #pragma region Conversion
inline bool Contains(const LSString& sRhs) const 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); 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); 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 endregion
#pragma region Logic #pragma region Logic
size_t StringLength(const char* pData) const; size_t StringLength(const char* pData) const;
bool Contains(const char* pData) const; void Assign(const char* pData);
size_t Find(const char* pData, size_t uiOffset = 0) const; 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 inline char At(size_t uiPos) const
{ {

View file

@ -8,6 +8,13 @@
int main() int main()
{ {
printf("---LSString---\n");
LSString s = "187";
printf("Found: %d", s.Find("7"));
return 0;
// - STRING // - STRING
{ {
printf("---LSString---\n"); printf("---LSString---\n");