Strings
In the old days, strings used to be simple. You identified the length needed to store a sentence, allocated memory, and copied each character’s ASCII values in a single row. Then, you put a 0 (zero) at the end, and you were done. Easy. But then you realized you needed something more dynamic as you were unsure how long the string would be. So, you wrote code to change the buffer required to store it. You also realized that you needed to have some operations on those characters. For instance, you might have wanted to know how long the string was and not have to count the characters every time, or maybe you wanted to convert all characters into uppercase. So, you wrote code for that as well. At that point, you had some data in the form of characters (with the zero at the end) and some methods on that data. That is the definition of a class, so in C++, you write a String
class.
Things got even more complicated when you realized that other cultures used other characters...