使用stdio在Unix和C ++上重定向输入和输出文件

时间:2012-01-26 23:50:46

标签: c++ linux unix stdio

我需要这样做:

$ ./compiledprog.x < inputValues > outputFile

因此,我从文件inputValues中读取,对于我们的案例,可能只是\n分隔int个值或其他值。然后printf()'进入outputFile。但从技术上讲,这叫做什么,我在哪里可以找到这样做的演示。

2 个答案:

答案 0 :(得分:1)

这称为I/O redirection

答案 1 :(得分:1)

正如其他人所说,它是输入/输出重定向。

这是一个将标准输入复制到标准输出的示例程序,在您的示例中将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;
}

注意:这是一个快速而脏的代码,它需要一个表现良好的文件作为输入。可以添加更详细的错误检查。