Cuando haces cin del numero (lineas), el salto de linea queda en el buffer, así que el primero string del bucle obtiene simplemente el salto de linea que quedo.
Esto lo puedes solucionar fácilmente con cin.ignore() tras el cin>>lineas que ignora un carácter
Código:
//...
cin >> lineas; //leo el primer valor del archivo, lo lee bien
cin.ignore();
//...