Перенаправление входных и выходных файлов в Unix и C ++ с использованием stdio - PullRequest
1 голос
/ 27 января 2012

Мне нужно сделать это:

$ ./compiledprog.x < inputValues > outputFile

, чтобы я прочитал из файла inputValues, который в нашем случае может быть просто \n разделенными int значениями или чем-то ещеТогда все, что printf() переходит в outputFile.Но как это называется, технически говоря, и где я могу найти демонстрацию этого?

Ответы [ 2 ]

1 голос
/ 27 января 2012

Как отмечали другие, это перенаправление ввода / вывода.

Вот пример программы, которая скопирует стандартный ввод в стандартный вывод, в вашем примере скопируйте содержимое из inputValues ​​в outputFile. Реализуйте в программе любую логику, какую захотите.

#include <unistd.h>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::cerr;

#include <string>
using std::string;

int main(int argc, char** argv) {
        string str;

        // If cin is a terminal, print program usage
        if (isatty(fileno(stdin))) {
                cerr << "Usage: " << argv[0] << " < inputValues > outputFile" << endl;
                return 1;
        }

        while( getline(cin, str) ) // As noted by Seth Carnegie, could also use cin >> str;
                cout << str << endl;

        return 0;
}

Примечание: это быстрый и грязный код, который ожидает файл с хорошим поведением в качестве ввода. Можно добавить более подробную проверку ошибок.

1 голос
/ 27 января 2012
...