In member function 'String String::operator+(const String&)': 102:44: error: 'i' was not declared in this scope
In function 'String operator+(const String&, const String&)': 116:44: error: 'i' was not declared in this scope
Please don't ignore the error messages that your compiler gives you.
You are missing two pairs of curly braces { } to delimit the i loops. (At least)
Actually, I was thrown by your very poor indentation in String::operator+ (lines 100 to 105), and the other operator+ (lines 114 to 119).
On closer inspection, these appear to be two separate (non-nested) loops in each case, but your indentation is wrong and obscuring that. You need to both declare and initialise i on both lines 102 and 116 or i will not exist.
I would strongly advise you to correct your indentation in both these functions, and, although a loop consisting of one statement doesn't strictly need enclosing curly brackets, if you put that statement on a separate line then I suggest you enclose it with { }, especially with dodgy indentation.
Line 145 is also wrong. You have probably mistyped i as 1. Please sort your indentation out.