Źle konwertujesz cyfre ze stringa na inta. Ten static_cast da ci po prostu wartość znaku w kodzie ascii (czyli np. dla '1' jest to 49, dla '0' 48), co w zasadzie i tak już miałeś, bo char to też typ liczb całkowitych, tylko o mniejszym zakresie (char ma 1 Bajt, a int 4). Spójrz w tablice ascii. Skoro '0' ma nr wartość ascii 48, to wystarczy, że od char-a odejmiejsz 48 i otrzymasz właściwą wartość. Także ten static_cast zamień na strTekscior[i] - 48.