code:
// Añadimos: #include <fstream>
class TId3v1
{
private:
char buffer[128];public:
String titulo, artista, album, comentario, anyo;
short genero;
void leer(String nombreFichero)
{
std::ifstream in(nombreFichero.c_str(),
std::ios::in | std::ios::binary);
if (!in)
throw Exception("No se pudo abrir el fichero.");
in.seekg(-128, std::ios::end);
in.read(buffer, 128);
if (memcmp(buffer, "TAG", 3))
throw Exception("Este fichero no contiene información.");
char szTemp[31];
titulo = lstrcpyn(szTemp, &buffer[3], 31);
artista = lstrcpyn(szTemp, &buffer[33], 31);
album = lstrcpyn(szTemp, &buffer[63], 31);
anyo = lstrcpyn(szTemp, &buffer[93], 5);
comentario = lstrcpyn(szTemp, &buffer[97], 31);
genero = buffer[127];
}
void guardar(String nombreFichero)
{
std::fstream fichero(nombreFichero.c_str(),
std::ios::in | std::ios::out
| std::ios::binary | std::ios::nocreate);
if (!fichero)
throw Exception("No se pudo abrir el fichero.");
fichero.seekp(-128, std::ios::end);
fichero.read(buffer, 128);
if (!memcmp(buffer, "TAG", 3))
fichero.seekp(-128, std::ios::end);
memset(buffer, 0, sizeof(buffer));
memcpy(buffer, "TAG", 3);
lstrcpyn(&buffer[3], titulo.c_str(), 31);
lstrcpyn(&buffer[33], artista.c_str(), 31);
lstrcpyn(&buffer[63], album.c_str(), 31);
lstrcpyn(&buffer[93], anyo.c_str(), 5);
lstrcpyn(&buffer[97], comentario.c_str(), 31);
buffer[127] = genero;
fichero.write(buffer, 128);
}
};