I'm assuming you aren't looking for someone to do your homework for you and just want some help. The concept you are exploring is commonly known as "bignum", or "arbitrary precision arithmetic", bignum being the data type, and AP being the types of operators/methods you'll create to add, subtract, etc your bignum numbers.
You mention C++; are you supposed to implement a class to do this? Are you to give the class methods such as add(), mul(), etc or have you explored operator overloading in your course yet?
If you'll search out in your book or a search engine the terms I mentioned in the beginning of my answer you will find all the information you need to get this done. Some hints or pointers when you find yourself scratching your head: remember that when storing the string of digits as an array of ints that their position in the string relates to its "place" (in decimal, that would be powers of 10 - the "ones place", the "tens place", etc.) Then, when you have your function that initializes the array with the digits passed to it's constructor method, you'll need to keep the same thing in mind for each "column" (position in the array/"place") that you are adding, subtracting, or other arithmetic operator. You will likely find the modulus operator handy when testing for carries, remainders and the like.
And if you really feel like thinking and learning, perhaps after you've figured out how to do this using base 10, maybe you'd find that breaking it up into blocks of more than one digit (as you do in the example in your question) and treating each block of a certain size as a number in a different number system (base 100? base 1000?) Of course, you'd still print the results as base 10 digits using the normal 0-9 printable ascii characters, but deal with them in the other base number system when performing arithmetic operations on the blocks.
Simplest route I think is to keep it all base 10, one character (digit) per integer array element, but it's a cool idea that might get you bonus points!