Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z logistyką zmiennej

Ostatnio zmodyfikowano 2017-11-27 15:28
Autor Wiadomość
blackstone
Temat założony przez niniejszego użytkownika
Problem z logistyką zmiennej
» 2017-11-27 15:15:36
Mam dziwaczny problem z moim kodem w c++ ( zaznaczę iż w cpp jestem na poziomie podstaw ) otóż gdy chce otworzyć jakiś plik za pomocą open() to gdy podaje ades pliku do otwarcia bezpośrednio w nawiasie jako argument funkcji to wszystko działa poprawnie , lecz jeśli ten sam tekst wkleje do zmiennej zdefiniowanej jako "string adres" ( która akutalnie podłączona jest do argumentu funkcji ) i tam gdzie był wcześniej bezpośrednio wpisany parametr wywołam zmienną z adresem ( w funkcji open ) to wówczas nowy kod nie chce mi się zkompilowac i wywala mi błąd


- kod :

void czytaj_plik(string nazwa)
{

 string adres = nazwa ;
  fstream plik ; // zmienna pliku
  plik.open(adres,ios::in ) ; // otwieranie pliku do czytania



    if(plik.good() == true)
    {
        cout << "Plik istnieje" << endl ;
    }
    else
    {
        cout << "Plik nie istnieje " << endl ;
    }
}
- Błąd który mi wywala:
|20|error: no matching function for call to 'std::basic_fstream<char>::open(std::string&, const openmode&)'|

- Linia 20 to ta linia w której jest plik.open[..]

- zaincludowane biblioteki iostream , fstream , cstdlib

- Korzystam z programu codeblox do pisania i kompilowania

W czym probelm ? Jak to rozwiązać
Z góry dzięki za odpowiedzi.
P-167236
Monika90
» 2017-11-27 15:23:14
Problem jest taki, że masz bardzo stary kompilator, albo nie masz włączonego C++11 lub nowszego standardu. Poszukaj w opcjach Code::Blocks - może da się gdzieś włączyć C++11, jak nie to zrób upgrade.


- zaincludowane biblioteki iostream , fstream , cstdlib
Powinno jeszcze być #include <string>
P-167237
RazzorFlame
» 2017-11-27 15:26:28
Masz starą wersję kompilatora, lub nie masz włączonego najnowszego standardu. Prawdopodobnie korzystasz z Code::Blocks a domyślnie zainstalowany kompilator prawdopodobnie obsługuje częściowo C++14. Podawanie std::string do fstream::open jest możliwe dopiero od C++11.
Instalacja Code::Blocks
Tutaj pokazałem jak dodać flagę "-std=c++14" do opcji kompilatora w Code::Blocks, skorzystaj z tego.
P-167238
YooSy
» 2017-11-27 15:28:19
plik.open( adres.c_str(), ios::in );
 Przed C++11.
P-167239
« 1 »
  Strona 1 z 1