diff --git a/ZString.cpp b/ZString.cpp index e7ac35e..e6f1445 100644 --- a/ZString.cpp +++ b/ZString.cpp @@ -171,6 +171,13 @@ namespace coreutils { } ZString ZString::substring(int start, int len) { + char *end = data + length; + char *startChar = data + start; + char *endChar = startChar + len; + char newlen = endChar > end ? endChar - end: len; + if(startChar < end) { + return ZString(startChar, newlen); + } return ZString(); } diff --git a/testing/zstring_test.cpp b/testing/zstring_test.cpp index 904bacb..3e1d978 100644 --- a/testing/zstring_test.cpp +++ b/testing/zstring_test.cpp @@ -85,6 +85,11 @@ int main(int argc, char **argv) { coreutils::ZString test14("25.5"); coreutils::ZString test15("xyx"); std::cout << test14.startsWithDouble() << ":" << test15.startsWithDouble() << std::endl; - + + coreutils::ZString test16("This is a test of substring"); + std::cout << test16.substring(10) << std::endl; + std::cout << test16.substring(10, 4) << std::endl; + std::cout << test16.substring(0, 7) << std::endl; + std::cout << test16.substring(18, 20) << std::endl; }