C++. Programa que filtra un txt y te deja sólo el mail

Buenas, estoy haciendo un programa en C++ que lea un fichero txt que contiene una lista de nombres, apellidos y correos electrónicos separados por espacios y te pone en otro fichero txt sólo la lista de correos separados por una coma. No me llega ni a compilar el programa. Os pongo el código y a ver si me podéis ayudar.
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

typedef char cadena[100];
int main(){
  int i; 
  ifstream in;                                // descriptor del fichero a abrir
  ofstream out;                               // descriptor del fichero a abrir
 
  in.open("entrada.txt");                     // Apertura del fichero
  if (in.fail() || in.bad())
    {
      cout << "\nIncapaz de crear o abrir el fichero" << endl;
    }
  else
    {
      out.open("salida.txt");                 // Apertura del fichero
     
      //Se opera sobre los ficheros
      while(!in.eof())
   {   
     in.getline(cadena,100,' ');         // condicion de parada un simple espacio
     for(i=0; cadena[i]=='\0'; i++)
       {
         if (cadena[i]=='@')             // palabra que contenga una @ = email
      out << cadena << " , " << endl;
       }
   }
     
      in.close();
      out.close();
    }
 
  return 0;
}


Gracias
Simplemente quita la palabra typedef.
1 respuesta