Tak, można. Dokładnie w taki sposób jak napisałeś.
cout << "Podaj nazwe pliku";
string nazwa_pliku;
cin>> nazwa_pliku;
ifstream plik(nazwa_pliku);
Jeżeli z jakiegoś powodu nie chcesz korzystać ze standardu C++11 to musisz wprowadzić małą modyfikację
cout << "Podaj nazwe pliku";
string nazwa_pliku;
cin>> nazwa_pliku;
ifstream plik(nazwa_pliku.c_str());
Jeżeli nazwa pliku zawiera spacje to musisz użyć innej metody na wczytanie nazwy pliku (np. getline)