7.12.2010 - bug fixes in PIString, all classes now based on PIString

This commit is contained in:
peri4
2010-12-07 19:13:15 +03:00
parent 08f214dbfa
commit 66d998f289
14 changed files with 194 additions and 145 deletions

View File

@@ -2,36 +2,46 @@
PIString & PIString::operator +=(const char * str) {
int i = 0;
uint i = 0;
while (str[i] != '\0') push_back(str[i++]);
return *this;
}
PIString & PIString::operator +=(const string & str) {
int l = str.size();
for (int i = 0; i < l; ++i) push_back(str[i]);
uint l = str.size();
for (uint i = 0; i < l; ++i) push_back(str[i]);
return *this;
}
PIString & PIString::operator +=(const PIString & str) {
int l = str.size();
for (int i = 0; i < l; ++i) push_back(str[i]);
uint l = str.size();
for (uint i = 0; i < l; ++i) push_back(str[i]);
return *this;
}
bool PIString::operator ==(const PIString & str) const {
int l = str.size();
uint l = str.size();
if (size() != l) return false;
for (int i = 0; i < l; ++i)
for (uint i = 0; i < l; ++i)
if (str[i] != at(i))
return false;
return true;
}
bool PIString::operator !=(const PIString & str) const {
uint l = str.size();
if (size() != l) return true;
for (uint i = 0; i < l; ++i)
if (str[i] != at(i))
return true;
return false;
}
PIString PIString::mid(const int start, const int len) const {
PIString str;
int s = start, l = len;
@@ -41,11 +51,11 @@ PIString PIString::mid(const int start, const int len) const {
s = 0;
}
if (l < 0) {
for (int i = s; i < size(); ++i)
for (uint i = s; i < size(); ++i)
str += at(i);
} else {
if (l > size() - s)
l = size() - s;
if (l > length() - s)
l = length() - s;
for (int i = s; i < s + l; ++i)
str += at(i);
}
@@ -63,8 +73,8 @@ PIString & PIString::cutMid(const int start, const int len) {
if (l < 0)
erase(begin() + s, end());
else {
if (l > size() - s)
l = size() - s;
if (l > length() - s)
l = length() - s;
erase(begin() + s, begin() + s + l);
}
return *this;
@@ -73,18 +83,30 @@ PIString & PIString::cutMid(const int start, const int len) {
PIString PIString::trimmed() const {
int st = 0, fn = 0;
for (int i = 0; i < size(); ++i)
for (int i = 0; i < length(); ++i)
if (at(i) != ' ' && at(i) != '\t')
{st = i; break;}
for (int i = size() - 1; i >= 0; --i)
for (int i = length() - 1; i >= 0; --i)
if (at(i) != ' ' && at(i) != '\t')
{fn = i; break;}
return mid(st, fn - st + 1);
}
PIString & PIString::trim() {
int st = 0, fn = 0;
for (int i = 0; i < length(); ++i)
if (at(i) != ' ' && at(i) != '\t')
{st = i; break;}
for (int i = length() - 1; i >= 0; --i)
if (at(i) != ' ' && at(i) != '\t')
{fn = i; break;}
return cutMid(st, fn - st + 1);
}
int PIString::find(const char str, const int start) {
for (int i = start; i < size(); ++i)
for (int i = start; i < length(); ++i)
if (at(i) == str)
return i;
return -1;
@@ -92,8 +114,8 @@ int PIString::find(const char str, const int start) {
int PIString::find(const PIString str, const int start) {
int l = str.size();
for (int i = start; i < size() - l + 1; ++i)
int l = str.length();
for (int i = start; i < length() - l + 1; ++i)
if (mid(i, l) == str)
return i;
return -1;
@@ -101,7 +123,7 @@ int PIString::find(const PIString str, const int start) {
int PIString::findLast(const char str, const int start) {
for (int i = size() - 1; i >= start; --i)
for (int i = length() - 1; i >= start; --i)
if (at(i) == str)
return i;
return -1;
@@ -109,8 +131,8 @@ int PIString::findLast(const char str, const int start) {
int PIString::findLast(const PIString str, const int start) {
int l = str.size();
for (int i = size() - l; i >= start; --i)
int l = str.length();
for (int i = length() - l; i >= start; --i)
if (mid(i, l) == str)
return i;
return -1;