Безопасно ли читать stdin/cin из ifstream?
Я читал, что можно прочитать cin через ifstream, изменив буфер, но безопасно ли это? Какие недостатки делают это так:
file.ios::rdbuf(cin.rdbuf());
Спасибо
C++: UNIX - по умолчанию переменная ifstream для стандартного ввода
iostream - C++: назначить cin переменной ifstream? - Переполнение стека
1 ответ
Решение
Да, это безопасно, вот и вся причина того, что rdbuf
функции существуют.
Это также одна из главных причин того, что iostreams являются медлительными. ifstream
объект не обязательно прикреплен к файлу. stringstream
объект может быть прикреплен к файлу. Много полиморфизма, много виртуальных звонков, нет шансов на оптимизацию.
Но вы платите за эти недостатки независимо от того, перепривязываете ли вы потоки или нет.