Portál AbcLinuxu, 4. prosince 2025 10:58
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.