Portál AbcLinuxu, 2. srpna 2025 07:49
char *ifileName; ifstream ifile; ... // cteme ze stdin if (ifileName == NULL) { while (cin) { c = cin.get(); if (c != EOF) { HTInsert(&HT, c); } } } // cteme ze souboru else { ifile.open(ifileName); if (ifile.is_open()) { while (ifile.good()) { c = ifile.get(); if (c != EOF) { HTInsert(&HT, c); } } ifile.close(); } }
Řešení dotazu:
std::ifstream
a std::cin
mají společného předka, std::istream
:
void ctiData(std::istream &stream) { ... } if (ifileName == NULL) { ctiData(std::cin); } else { std::ifstream file(ifileName); ctiData(file); }Btw. v Linuxu je standardní vstup dostupný jako
/dev/stdin
, tzn. lze udělat tohle:
std::ifstream file(ifileName ? ifileName : "/dev/stdin");
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.