Havaitsin juuri, että tällainen scripti, kuin
if (ifstream("~/.bookmarker/bookmarker.cpp"))
ei toimi. Ohjelma ei koskaan löydä tuota tiedostoa, vaikka se siellä on. Olen varma, että kaiken takana on tuo ubuntun kotikansion symboli, ~. Osaakos kukaan sanoa, miten tän saisi toimimaan?
E: siis muutenhan tuo ~ symboli toimii tässä ohjelmassani hyvin, tiedostojen ja kansioiden luominen onnistuu, muttei niiden avaaminen tai ainakaan olemassaolon tarkistaminen.
Merkki ~ tarkoittaa kotihakemistoa vain komentotulkille, joka muuttaa sen automaattisesti kotihakemiston nimeksi ennen toiminnon suorittamista.
Omassa ohjelmassasi voit hakea kotihakemiston nimen näin:
#include <stdlib.h> #include <stdexcept> #include <string> std::string home() { const char* tmp = getenv("HOME"); if (!tmp) { throw std::runtime_error("$HOME puuttuu!"); } return tmp; } // ifstream tiedosto((home() + "/.bookmarker/plaaplaa").c_str());
jaa että näin..kiittoos :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.