• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

błąd w funkcji ifstream

0 głosów
61 wizyt
pytanie zadane 10 stycznia w C i C++ przez Artur313 Użytkownik (620 p.)
edycja 10 stycznia przez Patrycjerz

witam Próbuje napisać program który wczyta pytanie o który wylosuje i wczyta losowe pytanie z przedziału od 1 do 20 konwersja int'a na string'a działa dobrze ale przy próbie otwarcia pliku program napotyka błąd 

kod wygląda tak : 



#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <ctime>


using namespace std;

int main()
{
    srand(time(NULL));

int L= rand()%20+1;
string numer;
stringstream strumien;
strumien<<L;
strumien >>numer;
string  napis = "pytanie"+numer+".txt";

    ifstream plik;
    plik.open(napis);
    if(plik)
    {
        string linia;
        while(getline(plik,linia))
        {
            cout<<linia;
        }

    }
    else
    {
        cout <<"wystapil blad nie mozna otworzyc pliku";
    }
    plik.close();
    return 0;
}

nie wiem czemu tak jest ? 

 

1 odpowiedź

0 głosów
odpowiedź 10 stycznia przez Artur313 Użytkownik (620 p.)
edycja 10 stycznia przez Artur313

już rozwiązałem problem zamiast

 plik.open(napis);

trzeba było dać 

plik.open(napis.c_str());

a czy mógłby mi ktoś dokładniej wyjaśnić jak działa c_str()? bo zastosowałem to i działa ale chciałbym to zrozumieć  

PS. mam jeszcze jedno pytanie czy da się zrobić tak aby pliki z pytaniami były umieszczone w osobny folderze umieszczonym w folderze z projektem i z tamtąd je odczytywać ?

komentarz 10 stycznia przez 10kw10 Pasjonat (22,740 p.)
komentarz 10 stycznia przez Patrycjerz Mędrzec (175,480 p.)
Metoda c_str zwraca reprezentację zawartości stringa w postaci wskaźnika na tablicę char.

Nazwa pliku w postaci stringa nie działa ci z powodu przestarzałego kompilatora. Obsługa takowego parametru została wprowadzona od standardu C++11. Inaczej trzeba się posiłkować zwykłym łańcuchem znaków.

Jeśli chcesz otwierać pliki z innego folderu, to możesz doprecyzować ścieżkę pliku o nazwy katalogów, np.: "folder/plik.txt" lub "folder\\plik.txt", jeśli używasz Windowsa.

Podobne pytania

0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 11 marca 2017 w C i C++ przez Meltern Początkujący (460 p.)
+1 głos
2 odpowiedzi 62 wizyt
pytanie zadane 29 stycznia 2017 w C i C++ przez czujek22 Mądrala (6,200 p.)
0 głosów
2 odpowiedzi 69 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

53,174 zapytań

96,434 odpowiedzi

197,515 komentarzy

25,973 pasjonatów

Przeglądających: 245
Pasjonatów: 16 Gości: 229

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...