Convertire stringa in intero

Ciao ragazzi, vi spiego il problema! Voglio recuperare l'orario da un modulo gsm è inserirlo come valore di partenza di un rtc software.

il problema è che non riesco a compilare il codice, ve lo mostro...

int ora = 00;

void setup() {
   mySerial.begin(19200); //velocità seriale del modulo GSM
  Serial.begin(9600); //velocità seriale del programma
recuperaora();

  //orologio software
  rtc.stopRTC(); //stop the RTC
  rtc.setTime([b]ora[/b],0,0); //set the time here  
  rtc.setDate(25,25,12); //set the date here
  rtc.startRTC(); //start the RTC
}
void loop() {  }
void recuperaora() {
   mySerial.println("AT+CCLK?");
   for (int timer3 = 0; timer3 <= 5; timer3++) {              //per mostrare il ciclo di risposte del modulo attivare il ciclo for
      String inData3 = mySerial.readStringUntil('\n');          //leggo le risposte
      Serial.println("Risposta da modulo GSM: " + inData3);    //mostra la chat tra arduino e il modulo gsm

      //scompongo la stringa per farla diventare un valore intero
      String data = (inData3.substring(8, 16));
      String ora = (inData3.substring(17, 25));
      data.trim();
      ora.trim();
      Serial.println(data);Serial.println(ora);
int ora=atoi(ora.c_str());
    }
}

Che errori ti da? Mettili tutti
E poi già il fatto che ci siano in giro degli [ b ] e [ /b ] non depone a tuo favore. Toglili.
Presentati poi sul forum apposito (se non lo hai già fatto) e prenditi un bel libro di C.

Se non ci dici almeno l'errore sarà difficile che noi si possa aiutare
ma da una scorsa al codice a naso direi che almeno un problema lo hai qui

Serial.println("Risposta da modulo GSM: " + inData3);    //mostra la chat tra arduino e il modulo gsm

e poi non mi è chiaro perchè ripetere 5 volte la stesssa sequenza, identica, con le stesse variabili
posta l'errore, che è meglio

e poi, segui un paio di regole semplici:
una riga uno statement, per quanto sia vero che puoi scrivere ancora roba dopo il punto e virgola non è per nulla comodo da capire
metti le giuste indentazioni, e le parentesi graffe come si deve
(non importa quale convenzione segui, ma UNA la devi seguire)
la formattazione automatica serve a questo
Se scrivi ordinato seguendo poche semplici regole e tieni ben formattato ed allineato il testo è tutto più semplice
NON è un consiglio, è una esplicita richiesta, in BASIC:
SE tu lo fai
ALLORA io sono disposto ad aiutarti
ALTRIMENTI no
FINEDELSE

CCLK will return the current local time in “yy/mm/dd,hh:mm:ss+/-zz” format
Dove fai questo, aggiungi la stampa di ora.c_str() su Serial, che cosa stampa ?
Serial.println(data); Serial.println(ora);
Serial.println(ora.c_str()); // stampa di ora.c_str()
int ora=atoi(ora.c_str());