Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ ifstream ja ubuntun kotikansio

vesikuusi [22.02.2011 22:40:29]

#

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.

Metabolix [22.02.2011 23:27:21]

#

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());

vesikuusi [23.02.2011 01:43:16]

#

jaa että näin..kiittoos :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta