• 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
66 wizyt
pytanie zadane 10 stycznia w C i C++ przez Artur313 Użytkownik (650 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 (650 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,880 p.)
komentarz 10 stycznia przez Patrycjerz Mędrzec (178,830 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ź 70 wizyt
pytanie zadane 11 marca 2017 w C i C++ przez Meltern Początkujący (460 p.)
+1 głos
2 odpowiedzi 64 wizyt
pytanie zadane 29 stycznia 2017 w C i C++ przez czujek22 Mądrala (6,520 p.)
0 głosów
2 odpowiedzi 78 wizyt
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

56,493 zapytań

101,200 odpowiedzi

208,601 komentarzy

28,161 pasjonatów

Przeglądających: 226
Pasjonatów: 6 Gości: 220

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.

...