Forráskód Böngészése

char appending for strings

Kajetan Johannes Hammerle 3 éve
szülő
commit
60544ec48b
2 módosított fájl, 16 hozzáadás és 1 törlés
  1. 9 0
      tests/StringBufferTests.cpp
  2. 7 1
      utils/StringBuffer.h

+ 9 - 0
tests/StringBufferTests.cpp

@@ -87,6 +87,14 @@ static void testClear(Test& test) {
     test.checkEqual(String("wusi1234"), s, "clear");
 }
 
+static void testAppendChar(Test& test) {
+    StringBuffer<5> s("");
+    for(int i = 0; i < 20; i++) {
+        s.append('a');
+    }
+    test.checkEqual(StringBuffer<5>("aaaa"), s, "char append with overflow");
+    test.checkEqual(4, s.getLength(), "length after char append with overflow");
+}
 
 void StringBufferTests::test() {
     Test test("StringBuffer");
@@ -102,5 +110,6 @@ void StringBufferTests::test() {
     testFloat(test);
     testBool(test);
     testClear(test);
+    testAppendChar(test);
     test.finalize();
 }

+ 7 - 1
utils/StringBuffer.h

@@ -46,7 +46,13 @@ public:
         return length;
     }
 
-    //StringBuffer& append(char c);
+    StringBuffer& append(char c) {
+        if(length < N - 1) {
+            data[length++] = c;
+            data[length] = '\0';
+        }
+        return *this;
+    }
 
     StringBuffer& append(const char* str) {
         for(int i = 0; length < N - 1 && str[i] != '\0'; length++, i++) {