freopen函數可以用于重定向標準輸入輸出流。
其原型為:
FILE *freopen(const char *filename, const char *mode, FILE *stream);
filename參數是要被打開的文件名。
mode參數是打開文件的模式,可以是以下幾種模式之一:
“r”:讀取模式,打開一個已有的文本文件進行讀取。
“w”:寫入模式,打開一個文本文件進行寫入,如果文件不存在則創建,如果文件存在則清空文件內容。
“a”:追加模式,打開一個文本文件進行寫入,如果文件不存在則創建。
“rb”:讀取二進制模式,打開一個已有的二進制文件進行讀取。
“wb”:寫入二進制模式,打開一個二進制文件進行寫入,如果文件不存在則創建,如果文件存在則清空文件內容。
“ab”:追加二進制模式,打開一個二進制文件進行寫入,如果文件不存在則創建。
stream參數是已經打開的文件流指針,可以是stdin、stdout、stderr或者通過fopen函數打開的文件流指針。
下面是一個示例,將標準輸入流重定向到一個文件,然后從該文件中讀取數據:
#include <iostream>
#include <cstdio>
int main() {
freopen("input.txt", "r", stdin); // 將標準輸入流重定向到文件input.txt
int num;
std::cin >> num; // 從文件中讀取數據
std::cout << "Number: " << num << std::endl;
return 0;
}
在運行該程序時,輸入的數據將從input.txt文件中讀取。
注意:在使用freopen函數時,需要小心文件的打開和關閉操作,以免出現資源泄漏或者文件操作錯誤的情況。