String s2("def");
String s3, s4;
+ // String + String
s3 = s1 + s2;
std::cout << s1 << " + " << s2 << " = " << s3 << "\n";
assert(s3 == "abcdef");
std::cout << s2 << " + " << s1 << " = " << s4 << "\n";
assert(s4 == "defabc");
+ // String + char*
+ s3 = s1 + "xyz";
+ std::cout << s1 << " + \"xyz\" = " << s3 << "\n";
+ assert(s3 == "abcxyz");
+
+ // char* + String
+ s4 = "klm" + s2;
+ std::cout << "\"klm\" + " << s2 << " = " << s4 << "\n";
+ assert(s4 == "klmdef");
+
+ // String + std::string
+ std::string str1("xyz");
+ s3 = s1 + str1;
+ std::cout << s1 << " + " << str1 << " = " << s3 << "\n";
+ assert(s3 == "abcxyz");
+
+ // std::string + String
+ std::string str2("klm");
+ s4 = str2 + s2;
+ std::cout << str2 << " + " << s2 << " = " << s4 << "\n";
+ assert(s4 == "klmdef");
+
+ // += String
+
s3 = s1;
s3 += s2;
std::cout << s1 << " += " << s2 << " = " << s3 << "\n";
assert(s3 == "abcdef");
+ // += char *
+
+ String s5("abcd");
+ std::cout << s5 << " += \"xyz\" = ";
+ s5 += "xyz";
+ std::cout << s5 << "\n";
+ assert(s5 == "abcdxyz");
+
+ // += std::string
+
+ String s6("ghij");
+ std::string str6("opqr");
+ std::cout << s6 << " += " << str6 << " = ";
+ s6 += str6;
+ std::cout << s6 << "\n";
+ assert(s6 == "ghijopqr");
+
return 0;
}