Problem z logistyką zmiennej
Ostatnio zmodyfikowano 2017-11-27 15:28
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.
|
|
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> |
|
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::BlocksTutaj pokazałem jak dodać flagę "-std=c++14" do opcji kompilatora w Code::Blocks, skorzystaj z tego. |
|
YooSy |
» 2017-11-27 15:28:19 plik.open( adres.c_str(), ios::in ); Przed C++11. |
|
« 1 » |