在C++中,文件操作流主要用于處理文本文件,而二進制文件則涉及到內(nèi)存中的二進制數(shù)據(jù)和文件之間的直接讀寫
文本文件是由字符組成的,以換行符(‘\n’)或回車換行符(“\r\n”)分隔。在C++中,我們可以使用ifstream
(輸入文件流)和ofstream
(輸出文件流)來處理文本文件。
示例:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream inputFile("input.txt"); // 打開輸入文件
std::ofstream outputFile("output.txt"); // 打開輸出文件
if (!inputFile.is_open()) {
std::cerr << "無法打開輸入文件" << std::endl;
return 1;
}
if (!outputFile.is_open()) {
std::cerr << "無法打開輸出文件" << std::endl;
return 1;
}
std::string line;
while (std::getline(inputFile, line)) {
outputFile << line << std::endl; // 將每一行從輸入文件復(fù)制到輸出文件
}
inputFile.close();
outputFile.close();
return 0;
}
二進制文件是由字節(jié)組成的,以二進制格式存儲數(shù)據(jù)。在C++中,我們可以使用ifstream
和ofstream
的binary
模式來處理二進制文件。
示例:
#include <iostream>
#include <fstream>
#include <vector>
int main() {
std::ifstream inputFile("input.bin", std::ios::binary); // 以二進制模式打開輸入文件
std::ofstream outputFile("output.bin", std::ios::binary); // 以二進制模式打開輸出文件
if (!inputFile.is_open()) {
std::cerr << "無法打開輸入文件" << std::endl;
return 1;
}
if (!outputFile.is_open()) {
std::cerr << "無法打開輸出文件" << std::endl;
return 1;
}
// 讀取文件大小
inputFile.seekg(0, std::ios::end);
size_t fileSize = inputFile.tellg();
inputFile.seekg(0, std::ios::beg);
// 讀取文件內(nèi)容到vector
std::vector<char> buffer(fileSize);
inputFile.read(buffer.data(), fileSize);
// 將vector內(nèi)容寫入輸出文件
outputFile.write(buffer.data(), fileSize);
inputFile.close();
outputFile.close();
return 0;
}
在這個示例中,我們首先以二進制模式打開輸入和輸出文件。然后,我們獲取文件的大小,并將文件內(nèi)容讀取到一個std::vector<char>
中。最后,我們將vector中的數(shù)據(jù)寫入到輸出文件中。