#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.