boost - tworzenie pliku

0
std::string filename(boost::archive::tmpdir());
	filename += "/demofile.txt";
void zapisz(const Obiekt &s, const char * filename)
{
	std::ofstream ofs(filename);
	boost::archive::text_oarchive oa(ofs);
	oa << s;
}

Na jakiej zasadzie to działa? Czy plik tekstowy jest rzeczywiście tworzony i jeśli tak to w jakiej lokalizacji, i czy to jest zwykły plik tekstowy? Bo zapis i odczyt działa ale nie mam pojęcia gdzie to jest zapisywane bo nie widzę aby się tworzył nowy plik.

Dobra, już znalazłem że się tworzy w katalogu TEMP

1

Tak, plik zostaje zapisany. Funkcja tmpdir zwraca ścieżkę do katalogu tymczasowego.

// http://www.boost.org/doc/libs/1_41_0/boost/archive/tmpdir.hpp

inline const char * tmpdir(){
    const char *dirname;
    dirname = std::getenv("TMP");
    if(NULL == dirname)
        dirname = std::getenv("TMPDIR");
    if(NULL == dirname)
        dirname = std::getenv("TEMP");
    if(NULL == dirname){
        //assert(false); // no temp directory found
        dirname = ".";
    }
    return dirname;
}

Sprawdzane są po kolei zmienne środowiskowe, jeśli żadna z nich nie jest zdefiniowana to zwracana jest ścieżka do aktualnego katalogu.

Tworzony jest 'zwykły' plik tekstowy, ale w prosty sposób możesz utworzyć plik binarny ( http://www.boost.org/doc/libs/1_58_0/libs/serialization/doc/archives.html#archive_models ).

Polecam tutorial: http://www.boost.org/doc/libs/1_58_0/libs/serialization/doc/tutorial.html

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.