Как перенаправить поток ввода обратно в консоль (linux)

211
15 марта 2018, 10:21

Я хочу перенаправить поток ввода обратно в консоль. В Windows можно так:

freopen(CON,"r",stdin).

Как это сделать в линуксе?

#include <bits/stdc++.h>
using namespace std;
int main()
{
    freopen("input.txt","r");
    string word;
    cin >> word;
    fclose(stdin);
    //?????????????????????????????????
    string word2;
    cin >> word2;
    cout << word << " " << word2;
}

Ура!!! Я нашел ответ: freopen("/dev/tty","r",stdin)

Answer 1

Проще всего - не перенаправлять поток в файл, тогда и перенаправлять его обратно не придется.

Для чтения данных из файла можно использовать класс ifstream:

#include <fstream>
// ...
std::ifstream file ("input.txt", std::ifstream::in);
std::string word;
file >> word;
file.close(); // можно не делать если область жизни переменной file заканчивается
std::string word2;
std::cin >> word2;
Answer 2

Я нашел ответ:

freopen("/dev/tty","r",stdin)
READ ALSO
C++ Задача с числовой прямой

C++ Задача с числовой прямой

При тестировании задачи в одном случае выдает ошибку

187
Qt5 QML 3D графика

Qt5 QML 3D графика

Вот этот код написан на Qt 48:

209
c++ Множества.Не получается провести операции над ними

c++ Множества.Не получается провести операции над ними

Задача такаяУ меня есть структура

212
Не работает функция toupper

Не работает функция toupper

Программа компилируется но текст не переводитПричём не работает что с подключенными библиотеками ctype что без них

212