Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ifstream && stdin


Автор: un1t 25.4.2006, 22:01
сначала был код
Код
ifstream bf("file.txt");

bf.read(...);
.... // далее туча других действий с bf


затем возникла надобность читать из stdin

если указываю stdin в конструкторе то все путем
Код
ifstream bf(stdin);


но мне надо указывать stdin или файл немного позже, вроде этого
Код
ifstream bf;

if (...)
{
   bf.open("file.txt");
}
else
{
   bf.open(stdin); //а тут не работает
}


bf.read(...);


если сделать так
Код
if (...)
{
  ifstream bf("file.txt");
}
else
{
   ifstream bf(stdin); 
}

bf.read(...); // то отсюда bf не виден

 

Автор: CPlusPlusFAN 25.4.2006, 22:27
А может сначала инициализировать bf потоком, а затем, если необходимо, то закрыть и открыть его заново с именем файла или наоборот? 

Автор: un1t 25.4.2006, 22:32
Цитата(CPlusPlusFAN @ 25.4.2006,  22:27)
А может сначала инициализировать bf потоком, а затем, если необходимо, то закрыть и открыть его заново с именем файла или наоборот?

smile) хитро, пожалуй так и сделаю

Код
ifstream bf(stdin);
if (...)
{
    bf.close();
    bf.open("file.txt");
}



 

Автор: un1t 26.4.2006, 06:58
еще такой вопрос если читать так
Код

ifstream bf(stdin);
bf.read(buf, MAX_BUF_SIZE);

то как можно определить сколько реально байт считалось? 

Автор: _hunter 26.4.2006, 10:22
взять позицию до чтения, взять позицию после чтения, вычесть... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)