1. 程式人生 > 實用技巧 >C++使用檔案重定向

C++使用檔案重定向

使用IDE工具: visual studio 2017

使用的Sales_item.h 檔案:https://github.com/Mooophy/Cpp-Primer/blob/master/include/Sales_item.h

《Primer c++》 19頁中,避免重複無聊的資料輸入,使用檔案的重定向,大體意思就是從文字中讀取需要的資料,而不是視窗中一行一行的輸入

內容樣例給出: $addItem <infile> outfile

其中 addItem 是程式編譯後的可執行檔案,尖括號中是資料的原始檔,outfile是要輸出的檔案,需要注意的是這裡的輸入和輸出檔案需要和exe檔案在同一目錄下

1、在window命令列視窗中使用指令完成

在開始選單->安裝路徑下啟動 [ x64 Native Tools Command Prompt for VS 2017]

切換到 可執行程式的路徑下,執行【 vshello <input.txt> output.txt 】

其中vshello 是專案debug 資料夾中的 可執行檔案,input.txt 和 output.txt 也一同放在該資料夾下。

input.txt 中放有兩行記錄:

x-78 3 20.00
x-78 2 21

當命令執行完成後,可在output.txt 中看到輸出結果。

但是這種方式完全是在命令列中,我們想斷點除錯完全不行,所以想著可以試著從程式碼中讀取檔案,然後進行計算

2、在程式碼中讀取資料檔案

所使用的涉及到第八章中的IO庫 fstream 的使用,

#include <iostream>
using std::cin; using std::cout; using std::endl;
#include <string>
using std::string;
#include "Sales_item.h"
#include <fstream>

int main()
{
	std::ifstream in("input.txt");
	std::streambuf *cinbackup;
	cinbackup = cin.rdbuf(in.rdbuf());

	Sales_item item1, item2;
	cin >> item1 >> item2;
	cout << item1 + item2 << endl;

	return 0;
}

  

需要注意的是檔案input.txt 放在的位置是專案下,而非前面debug資料夾中。