fstream funkcja open - nie wczytuje stringa

0
#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <cstdlib>
#include <cctype>
using namespace std;
class mapa
{
	public:
		string sciezka;
		mapa(string a)
		{
			sciezka=a;
		}		
		mapa(void)
		{
			
		}
	  void wczytaj(void)
		{
			int y=0;
 			int x=48;
 	 map<string, int> slowa;
 	 
 	ifstream plik;
 plik.open(sciezka.c_str(), fstream::in);
    if(plik.is_open())
    {    
    while(plik.good())
    {
        string s;
        getline(plik, s);            
        while(s.size() > 0)
        {
           int pozycja = s.find_first_of(' ');
            if(pozycja < 0)
                pozycja = s.size();
              if(s[pozycja-1]>(char)y && s[pozycja-1]<(char)x)
			  {			    
            string word = s.substr(0, pozycja-1);
            for(int i=0;i<word.length();i++)
            word[i]=tolower(word[i]);
            if(word !="")
            {            
            if (slowa.find(word) == slowa.end()) 
                    slowa[word] = 1; 
                else 
                    slowa[word]++;
                }
            s = s.erase(0, pozycja+1);
        }
        else
        {        
        string word = s.substr(0, pozycja);
         for(int i=0;i<word.length();i++)
            word[i]=tolower(word[i]);
            if(word !="")
            {            
            if (slowa.find(word) == slowa.end()) 
                    slowa[word] = 1; 
                else 
                    slowa[word]++;
                }
            s = s.erase(0, pozycja+1);
    }
}
    }
        
	}
		else
{
	throw "Podana sciezka dostepu do pliku nie istnieje!";
}

typedef map<string,int>::iterator iterator;
for(iterator p = slowa.begin(); p != slowa.end(); p++)
        cout << p->first << ": " << p->second << endl;

}
	};
	int main()
{
  string b; 
mapa maps(b);

cout<<"podaj sciezke"<<endl;
cin>>b;

    try
    {
    	maps.wczytaj();	
    }
    catch(const char* s)
	{
		cout<<s<<endl;
		cout<<"Prosze podac inna sciezke"<<endl;
		
	}    
       
}

Program ma za zadanie liczenie slow za pomocą biblioteki map. Wszystko się kompiluje i uruchamia ale przy wpisywaniu stringu ze ścieżka dostępu, tak jakby nie wczytuje mi tej scieżki. Rzuca wyjątek, a ścieżka która wpisuje jest na pewno poprawna( sprawdzałem wpisując ja bezpośrednio do funkcji open). Pewnie jest jakiś błąd w funkcji open, którego nie dostrzegam. Prosze o pomoc.

0
michalek1289 napisał(a):

fstream funkcja open - nie wczytuje stringa
I bardzo dobrze, tak powinno być, funkcja open powinna plik otworzyć a nie stringa wczytywać.

1
string b; 
mapa maps(b);
 
cout<<"podaj sciezke"<<endl;
cin>>b;

W jaki sposób to ma działać? Najpierw tworzysz obiekt za pomocą pustego stringa, a dopiero potem wczytujesz ten string z klawiatury.

1 użytkowników online, w tym zalogowanych: 0, gości: 1