Approfitto sempre di questo post (è inutile aprirne un altro visto che l'argomento è quasi lo stesso) per segnalare un altro problema alla quale non riesco a trovare soluzione.

Praticamente devo ricevere una stringa in input che contenga anche dei numeri e:

-sommare i numeri presenti nella stringa
-creare una cifra composta da tali numeri (ad Es. stringa ----> we34jhu57 ---> cifra = 3457) e sommarla alla somma dei numeri presenti nella stringa.

ecco il listato che ho elaborato io

codice:
//Somma numeri in una stringa
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    const int strlenght=20;
    char str[strlenght+1];
    char nod[strlenght+1];
    int somma, j, i, cifra=0;
    cout << "Inserire stringa (max " <<strlenght<< " char) > ";
    cin.getline(str, strlenght);
    somma = 0; j=0; i=0;
    while ('\0'!=str[j])
    {
          if ((str[j]>='0') && (str[j]<='9'))
          {
             somma += (int)str[j] - (int)'0';
             nod[i] = str[j];
          }
          j++;
          i++;
    }  
    cifra = (int)nod;
    cout << "La somma dei numeri presenti nella stringa e' :"<< somma << endl;
    cout << "Il numero formato dalle cifre presenti nella scritta e' : " << cifra << endl;
    cout << "La loro somma e' : " << somma + cifra << endl;     
    system("pause");
    return 0;
}
l'dea era di creare un'array di appoggio dove inserire sequenzialmente i numeri trovati nella stringa e poi successivamente trasformare l'array in un intero tramite il casting. purtroppo però l'operazione di casting non funziona in modo esatto. Dove sbaglio ?

Grazie