C++ otwieranie pliku tekstowego o nazwie wczytanej z klawiatury

0

Witam,
potrzebuję pomocy. Mianowicie, plik ma otwierac sie po podaniu przez uzytkownika nazwy pliku, zamieszczam poniżej fragment mojego kodu, dodam, ze plik normalnie wczytuje dane z pliku, jeśli zapiszę tak, cytuję: "NazwaPliku.txt" . Czy moglby ktos poradzic, co nalezy wpisac w ostatniej linijce w nawiasach, żeby program działał poprawnie?

    string NazwaPliku;
    cout << "Podaj nazwe pliku wejsciowego: "<< endl;
    cin >> NazwaPliku;

    ifstream plikDoOdczytu;
    plikDoOdczytu.open( NazwaPliku.c_str(), ios::in );
5

Chodzi Ci o to że nie dokleja sie rozszerzenie?
Jeśli tak to wystarczy NazwaPliku += ".txt"

0

Nie, o to, ze plik nie otwiera się, jeżeli wpisuje jego nazwę w konsoli, tak jakby nie istniał. Błąd zapewne jest w tej linijce gdzies w nawiasie, tylko nie mam juz pomyslu, co nalezy zrobic, zeby dzialalo poprawnie

plikDoOdczytu.open( NazwaPliku.c_str(), ios::in );

0

przeciez podal Ci wyzej odpowiedz. Wpisujesz zla nazwe pliku i dlatego Ci nie otwiera. Rozszerzenie rowniez musisz napisac.

0

aaaaa!!! zle zrozumialam, ok dziękuję bardzo, działa jak trzeba :)

0

Mam jeszcze jedyno pytanie, muszę wpisac pewne dane do pliku o nazwie takiej, jak nazwa pliku wejściowego z doklejoną końcówka ".max". ale wywala mi bład w strcpy, czy ktos ma pomysl jak naprawic ten blad?

  
    void student::zapis(string NazwaPliku) {
    string NazwaPliku2; 

    strcpy(NazwaPliku2, NazwaPliku);
    NazwaPliku2 += ".max";
    ofstream plikDoZapisu;
    plikDoZapisu.open( NazwaPliku2.c_str(), ios::app );

}

4
strcpy(NazwaPliku2, NazwaPliku);
NazwaPliku2 += ".max";

strcpy operuje na c-stringach, nie std::string. Po to masz std::string, żeby nie musieć z takich rzeczy jak strcpy korzystać:

NazwaPliku2 = NazwaPliku + ".max";

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