Java和C++的标准输出流重定向

来源:互联网 发布:嵌入式linux桌面系统 编辑:程序博客网 时间:2024/05/19 10:37

0. 概要

本文记录一下 Java和C++的标准输出流重定向。

  • 概要
  • Java
  • C Plus Plus

1. Java

输入文件-> D:\\TerminalInput\\student.txt

5huhu 5haha 3xixi 5hengheng 2gaoshou 8
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.PrintStream;import java.util.Scanner;public class Main {    public static void main(String[] args) {        String INPUT = "D:\\TerminalInput\\student.txt";        String OUTPUT = "D:\\TerminalInput\\student_out.txt";        FileInputStream instream = null;        PrintStream outstream = null;        try {            instream = new FileInputStream(INPUT);            outstream = new PrintStream(new FileOutputStream(OUTPUT));            System.setIn(instream);            System.setOut(outstream);        } catch (Exception e) {            e.printStackTrace();        }        Scanner sc = new Scanner(System.in);        while(sc.hasNextLine()){            System.out.println(sc.nextLine());        }        System.out.println("Done1"); // "Done1" 写入文件中        System.err.println("Done2"); // "Done2" 作为错误日志, 只打印,不会写到文件中    }}

输出文件-> D:\\TerminalInput\\student_out.txt

5huhu 5haha 3xixi 5hengheng 2gaoshou 8Done1

2. C Plus Plus

C++
还是上面的输入数据 student.txt
现在根据学生的分数大小,从大到小进行排序。
这里写图片描述

#include <iostream>using namespace std;//创建一个结构体,用来存储学生的姓名和分数struct student{    char name[21];    int score;};int main(int argc, char *argv[]){    struct student s[100], temp;    int i,j, n ;    freopen("D:\\TerminalInput\\student.txt", "r", stdin);    freopen("D:\\TerminalInput\\student_sort_by_score.txt", "w", stdout);    scanf("%d", &n);    for(i=0; i< n; i++){        scanf("%s %d", &s[i].name, &s[i].score);    }//    for(int k=0; k< n; k++){//        printf("%s %d ", s[k].name, s[k].score);////    }//    cout<< endl;    //分数从高到低排列    for(i=1; i<n; i++){        for(j=0; j< n-i; j++){            if(s[j].score < s[j+1].score){                temp = s[j];                s[j] = s[j+1];                s[j+1] = temp;            }        }    }    for(int k=0; k<n; k++)        printf("%d %s\n", s[k].score, s[k].name);    fclose(stdin);//关闭输入流    fclose(stdout);//关闭输出流    return 0;}