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
{
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;
}
//-----------------------------------------------------------------------------------------------------------------------------

View file

@ -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
{

View file

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