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

String jako parametr

0 głosów
829 wizyt
pytanie zadane 16 czerwca 2016 w C i C++ przez igor1988bb Użytkownik (800 p.)
Witam mam do was szybkie pytanie i nie rozumiem gdzie leży błąd. Otóż mam taki mały program :

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

 

int main()
{
   //string SCIEZKA;
   string SCIEZKA = "D:\\C++\\CONTENT\\plik.txt";
   string zawartosc_pliku;

   ifstream NowyPlik;
   NowyPlik.open(SCIEZKA);
   while(NowyPlik.good())
        {
        getline(NowyPlik, zawartosc_pliku);
        cout<<zawartosc_pliku<<endl;
        }
   NowyPlik.close();

   cin.get();
   return 0;
}

Program powinien odtworzyć plik ze ścieżki w stringu ale wywala błąd a ja nie wiem dlaczego. To samo się dzieje w innych przypadkach np : system(zmienna); W czym leży problem? Z góry dziękuję za pomoc

1 odpowiedź

0 głosów
odpowiedź 16 czerwca 2016 przez draghan VIP (106,230 p.)

Wypadałoby dać kod do bloczku i podać komunikat błędu.

Otwarcie pliku jest poprawne. Zauważ jednak, że konstruktor std::fstream przyjmuje std::string dopiero od C++11. Stąd wnioskuję, że Twój kompilator nie działa w tym trybie. Widzę dwa rozwiązania - dodać odpowiednią flagę kompilatora lub użyć metody std::string::c_str().

komentarz 16 czerwca 2016 przez igor1988bb Użytkownik (800 p.)
to mi wywala w logu :

D:\C++\PLIK_OTWORZ\main.cpp|17|error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)'|
1
komentarz 16 czerwca 2016 przez draghan VIP (106,230 p.)

Wybacz, rano byłem z deczka nieprzytomny. Przecież Ty nie do konstruktora podajesz ścieżkę. Niemniej - problem ma to samo źródło. Metoda std::fstream::open() również potrafi obsługiwać std::string "dopiero" od C++11. Rozwiązaniem problemu nadal jest włączenie obsługi C++11 w opcjach kompilatora (zalecam) lub podanie do metody otwierającej c-stringa:

NowyPlik.open(SCIEZKA.c_str());

 

komentarz 16 czerwca 2016 przez igor1988bb Użytkownik (800 p.)
Właśnie o to mi chodziło. Wielkie dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 299 wizyt
0 głosów
1 odpowiedź 663 wizyt
pytanie zadane 10 października 2021 w JavaScript przez lysywilkoklak Początkujący (290 p.)
0 głosów
1 odpowiedź 401 wizyt

93,771 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,372 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...