C++程序如何将标准输入重定向为文件输入?

使用环境:MAC终端使用cin语句输入时我已经尝试了『<test.in』但是没有效果,不知为何。。。。... 使用环境:MAC 终端
使用cin语句输入时
我已经尝试了 『 < test.in』但是没有效果,不知为何。。。。
展开
 我来答
小坤坤的愤怒
2019-01-29 · 超过11用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:24.2万
展开全部

先进行编译生成exe,然后在命令行终端下,键入 程序名 < test.in (ps:如果向输出到文件,再追加 > test2.out )【注意,in和out只不过是后缀而已,可以改为txt】

如图(测试环境:windows cmd)

中间的空格windows和unix下是不一样的,可能加也可能不加。具体可见《c primer plus 第六中文版》P223,P225

兔子和小强
2014-08-25 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1419万
展开全部

摘自stack overflow:

#include <iostream>
#include <fstream>
#include <string>

void f()
{
    std::string line;
    while(std::getline(std::cin, line))  //input from the file in.txt
    {
        std::cout << line << "\n";   //output to the file out.txt
    }
}
int main()
{
    std::ifstream in("in.txt");
    std::streambuf *cinbuf = std::cin.rdbuf(); //save old buf
    std::cin.rdbuf(in.rdbuf()); //redirect std::cin to in.txt!

    std::ofstream out("out.txt");
    std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
    std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!

    std::string word;
    std::cin >> word;           //input from the file in.txt
    std::cout << word << "  ";  //output to the file out.txt

    f(); //call function


    std::cin.rdbuf(cinbuf);   //reset to standard input again
    std::cout.rdbuf(coutbuf); //reset to standard output again

    std::cin >> word;   //input from the standard input
    std::cout << word;  //output to the standard input
}
追问
你这是通过修改源程序实现的,用法写的很清楚确实不错,不过还没有达到我的初始目标。你有知道Mac 终端通过外部重定向怎么实现吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式