Sprawdzenie poprawności wpisanej nazwy pliku

0

Witam,

Jedna z funkcji w moim programie odpowiedzialna jest za otwarcie pliku o nazwie podawanej z klawiatury przez użytkownika, kod wygląda tak:

 
void otworz (ifstream &file)
{
	string nazwa_pliku;
	do{
		cout << "Podaj nazwe pliku : "<<endl;
		cin >> nazwa_pliku;
		file.open(nazwa_pliku+=".txt");
		if (!file.is_open())
			cout<<"Podana nazwa pliku jest nieprawidłowa! Plik nie istnieje"<<endl;
	} while(!file.is_open());
};

Dopisuje tutaj automatycznie rozszerzenie do nazwy. Chciałbym jednak zrobić tak, że funkcja sprawdza czy użytkownik podał nazwę z rozszerzeniem czy bez i dopisywał .txt tylko jeżeli nie podał jej użytkownik. Nie wiem jednak jak to wykonać, proszę o wskazówki.

Z góry dzięki za pomoc,

0

Moim zdaniem nie powinieneś tego robić. To od użytkownika zależy co chce otworzyć, jeżeli każe Ci otworzyć dziwny plik, zrób to, to nie Twój problem. Informuj jedynie, jeżeli pliku nie da się otworzyć.

Btw: to, że pliku nie uda się otworzyć wcale nie oznacza, że nazwa jest nieprawidłowa.

0
void otworz(ifstream &file)
  {
   file.close();
   file.clear();
   while(true)
     {
      cout << "Podaj nazwe pliku : ";
      string nazwa_pliku;
      getline(cin,nazwa_pliku);
      file.open(nazwa_pliku.c_str());
      if(file) return;
      file.open((nazwa_pliku+".txt").c_str());
      if(file) return;
      cout<<"Podana nazwa pliku jest nieprawidłowa! Plik nie istnieje"<<endl;
     }
  }
0

Rozumiem o co Ci chodzi i jest w tym oczywiście trochę racji. Jednakże jest to program, gdzie mam prawo z góry założyć, że plikiem do otwarcia mogą być jedynie te z *.txt, dane są w nim wpisane poprawnie względem założeń całego zadania i nie jest zabezpieczony (bo o to Ci pewnie chodziło odnośnie tego, że niektórych plików nie da się otworzyć pomimo, że istnieją)

Dlatego chce dodać jedynie to jedno zabezpieczenie jako dodatek do całości, ale nie bardzo wiem jak się za to zabrać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1