[C++ / boost] polskie znaki + filesystem

0

Witam,

Mam problem z obsługą polskich znaków w boost. Mianowicie, za pomocą directory_iterator'a zczytuję nazwy plików w katalogu, do listy. Używam przy tym obiektu "path". Jednak gdy nazwy plików zawierają jakieś polskie znaki (z wyjątkiem "ó" chyba), to nie mogę potem podać zczytanej nazwy przy otwieraniu pliku za pomocą fstream, gdyż obiekt zwraca błąd.

W takim razie jak to zrobić, żebym mógł otwierać pliki zaierające polskie znaki? Zależy mi na użyciu obiektu path.

Nikt nie wie, czy nikomu się nie chce pomóc ?

Troche kodu:

#include <iostream>
#include <fstream>
#include <list>

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/convenience.hpp>
#include <boost/filesystem/fstream.hpp>

using namespace std;
using namespace boost::filesystem;


int main()
{
		
	path pth("G:/", native);
	
	directory_iterator it(pth), end;
	
	list<string> dirs;
	
	while(it != end)
	{
		if( !is_directory(*it) )
			dirs.push_back(it->string());
		++it;
	}
	
	for(list<string>::iterator i(dirs.begin()), end(dirs.end()); i != end; ++i)
		cout << *i << endl;
	
	std::ifstream plik( dirs.front().c_str() );
	
	if( plik )
		cout << "OK" << endl;
	
	
}

Jeśli w nazwie pliku sa polskie znaki to plik się nie otwiera.

0

Nazwy plików są kodowane na dysku zgodnie z OEM.
Funkcje których używasz mogą potrzebować OEM albo ANSI.

0

Czy takie kodowanie można ustawić, czy musi to być uwzględnione w tych funkcjach ?

0

SetFileApisToOEM i SetFileApisToAnsi.

0

Faktycznie, na ekranie są już polskie znaki, jednak fstream dale sobie nie radzi. Jutro nad tym pomyślę. Dzięki za porade "kik", bardzo mi pomogłeś :)

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