C++ —— 文件操作(流式操作)

C++ —— 文件操作(流式操作)

  • ofstream
    • 文件創建
    • 文件寫入
  • ofstream 文件打開模式
    • std::ios::out 寫入模式
    • std::ios::app 追加模式
    • std::ios::trunc 截斷
    • std::ios::binary 二進制
    • std::ios::ate at the end模式
  • ifstream
    • std::ios::in 讀取模式(默認)
    • std::ios::binary
    • 模式組合
      • 常見組合
    • 特殊模式說明
    • std::ios::ate (At End)
    • 重要注意事項
    • 完整示例
    • 模式總結表
  • fstream
  • C++ `fstream` 文件流詳解
    • 基本用法
      • 1. 頭文件
      • 2. 打開文件
      • 3. 檢查文件是否成功打開
    • 文件打開模式
    • 讀寫操作
      • 寫入文件
      • 讀取文件
      • 二進制讀寫
    • 文件指針控制
      • 獲取當前位置
      • 移動指針
    • 完整示例
    • 注意事項
  • 文件流的成員函數
      • **1. 打開/關閉文件**
      • **2. 狀態檢查**
      • **3. 讀寫操作**
        • **基本讀寫**
        • **二進制讀寫**
      • **4. 文件指針操作**
      • **5. 其他功能**
      • **示例代碼**
      • **注意事項**
  • 流式文件操作和一般的文件操作函數區別
      • **1. 設計理念**
      • **2. 使用方式對比**
        • **(1)打開文件**
        • **(2)讀寫數據**
        • **(3)關閉文件**
      • **3. 核心區別**
      • **4. 適用場景**
        • **優先使用流式操作的情況**
        • **優先使用一般函數的情況**
      • **5. 代碼示例對比**
        • **示例 1:復制文本文件**
        • **示例 2:讀取二進制數據**
      • **總結**

我們之前已經了解過了C語言的文件操作,如果大家對著一塊不是很了解的話,可以點擊這里:

https://blog.csdn.net/qq_67693066/article/details/135588933?spm=1011.2415.3001.5331

我們來看看C++對于文件操作是怎么辦的:

ofstream

在這里插入圖片描述
ofstream(Output File Stream)是 C++ 中用于寫入文件的類,屬于 fstream 庫。

文件創建

int main()
{std::ofstream file("myfile.txt");//檢查是否創建成功// 檢查是否創建成功if (!file) {std::cout << "文件創建失敗!";return 1;}std::cout << "文件創建成功!";return 0;
}

運行成功的話,可以在項目的路徑下看見新創建的文件:
在這里插入圖片描述

文件寫入

ofstream的寫入直接用 << 就可以了:

int main()
{std::ofstream file("myfile.txt");if (file) {file << "姓名: 張三\n";     // 寫入字符串file << "年齡: " << 25 << "\n";  // 混合寫入file << "身高: " << 175.5 << "cm\n";}return 0;
}

在這里插入圖片描述

ofstream 文件打開模式

ofstream 提供了多種文件打開模式,通過位掩碼(std::ios 中的枚舉)組合使用:

std::ios::out 寫入模式

std::ios::out,文件存在時會清空文件內容,文件不存在的話會創建新的文件,我們可以來試驗一下,我剛剛在前面的介紹中往文件中寫入了一些文字:
在這里插入圖片描述我們重新執行一次代碼:

int main()
{std::ofstream file("myfile.txt",std::ios::out); //默認模式return 0;
}

在這里插入圖片描述

std::ios::app 追加模式

std::ios::app允許你在創建完文件之后,之后再次往文件當中追加內容:

int main()
{//std::ofstream file("myfile.txt",std::ios::out); //默認模式std::ofstream file("myfile.txt", std::ios::app);if (file){file << "I am wiriting\n";}return 0;
}

在這里插入圖片描述

std::ios::trunc 截斷

如果文件已存在,清空文件內容(與 ios::out 默認行為相同)

int main()
{//std::ofstream file("myfile.txt",std::ios::out); //默認模式//std::ofstream file("myfile.txt", std::ios::app);std::ofstream file("myfile.txt", std::ios::trunc);return 0;
}

在這里插入圖片描述

std::ios::binary 二進制

std::ios::binary 是 C++ 文件流的一個打開模式,用于以二進制形式讀寫文件,避免文本模式下的字符轉換:

適用場景:

  • 讀寫非文本文件(如圖片、音頻、視頻、壓縮包等)。
  • 精確控制文件內容,避免文本模式下的自動轉換。
int main()
{// 以二進制模式寫入文件(如果文件存在,會被覆蓋)std::ofstream file("data.bin", std::ios::binary | std::ios::out);if (!file) {std::cerr << "Failed to open file!" << std::endl;return 1;}int num = 12345;double pi = 3.14159;char str[] = "Hello Binary!";// 直接寫入二進制數據file.write(reinterpret_cast<const char*>(&num), sizeof(num));file.write(reinterpret_cast<const char*>(&pi), sizeof(pi));file.write(str, sizeof(str)); // 包括 '\0' 結束符file.close();std::cout << "Binary data written to data.bin" << std::endl;}

std::ios::ate at the end模式

std::ios::ate 創建之后文件指針的位置就會放在最后,并且可以通過seekp來移動文件指針位置,重新輸入內容:

int main()
{std::ofstream file("myfile.txt", std::ios::ate);file << "I am writing " << endl;file.seekp(3);file << "This is a another setence " << endl;return 0;
}

在這里插入圖片描述

ifstream

std::ifstream 是 C++ 標準庫中專門用于從文件讀取數據的輸入流類,繼承自 std::istream。它是文件操作三大類之一(另外兩個是 ofstream 和 fstream)。
在這里插入圖片描述

std::ios::in 讀取模式(默認)

std::ios::in 以讀取模式打開,文件必須存在,否則會失敗:

#include<fstream>int main()
{std::ofstream file1("myfile.txt", std::ios::ate);file1 << "I am writing " << endl;file1.seekp(3);file1 << "This is a another setence " << endl;std::ifstream file2("myfile.txt", std::ios::in);//獲取文件大小file2.seekg(0, std::ios::end);std::streampos fileSize = file2.tellg();file2.seekg(0);std::cout << "文件大小: " << fileSize << " 字節" << std::endl;char* buffer = new char[1024*1024]; file2.read(buffer, fileSize);buffer[fileSize] = '\0'; // 添加終止符printf("%s\n", buffer);return 0;
}

在這里插入圖片描述

std::ios::binary

  • 作用:以二進制模式打開文件
  • 特點
    • 避免文本模式下的字符轉換(如換行符轉換)
    • 適合讀取非文本文件(如圖片、視頻等)
  • 示例
    std::ifstream binFile("image.jpg", std::ios::binary);
    

模式組合

可以組合多個模式使用,使用按位或運算符 |

常見組合

  1. 普通文本讀取

    std::ifstream textFile("text.txt", std::ios::in);
    
  2. 二進制讀取

    std::ifstream binFile("data.bin", std::ios::in | std::ios::binary);
    
  3. 從文件末尾開始讀取

    std::ifstream file("log.txt", std::ios::in | std::ios::ate);
    

特殊模式說明

std::ios::ate (At End)

  • 作用:打開文件后立即定位到文件末尾
  • 特點
    • 可以先用 tellg() 獲取文件大小
    • 之后可以用 seekg() 移動到任意位置讀取
  • 示例
    std::ifstream file("data.txt", std::ios::in | std::ios::ate);
    if (file.is_open()) {std::streampos size = file.tellg(); // 獲取文件大小file.seekg(0); // 回到文件開頭開始讀取// ...讀取操作...
    }
    

重要注意事項

  1. 文件不存在

    • 如果文件不存在且只使用 std::ios::in,打開會失敗
    • 檢查是否成功打開:
      if (!file.is_open()) {// 處理錯誤
      }
      
  2. 模式兼容性

    • ifstream 不支持寫入模式(如 std::ios::out
    • 如果需要寫入,應使用 fstream
  3. 二進制模式

    • 在Windows平臺上,文本模式會自動轉換 \r\n\n
    • 二進制模式保持原始字節不變
  4. 默認行為

    • 如果不指定任何模式,默認是 std::ios::in
    • 如果不指定二進制模式,默認是文本模式

完整示例

#include <fstream>
#include <iostream>int main() {// 以二進制模式打開文件并從末尾開始std::ifstream file("data.dat", std::ios::in | std::ios::binary | std::ios::ate);if (!file.is_open()) {std::cerr << "無法打開文件" << std::endl;return 1;}// 獲取文件大小std::streampos fileSize = file.tellg();std::cout << "文件大小: " << fileSize << " 字節" << std::endl;// 回到文件開頭file.seekg(0, std::ios::beg);// 讀取文件內容char* buffer = new char[fileSize];file.read(buffer, fileSize);// 處理數據...delete[] buffer;file.close();return 0;
}

模式總結表

模式標志描述適用場景
std::ios::in讀取模式(默認)普通文本文件讀取
std::ios::binary二進制模式非文本文件讀取
std::ios::ate打開后定位到文件末尾需要先獲取文件大小的場景

fstream

在這里插入圖片描述
fstream其實是ofstream和ifstream的結合:

C++ fstream 文件流詳解

fstream 是 C++ 標準庫中用于文件輸入輸出的流類,它結合了 ifstream(輸入)和 ofstream(輸出)的功能,允許對文件進行讀寫操作。

基本用法

1. 頭文件

#include <fstream>

2. 打開文件

std::fstream file;
file.open("example.txt", std::ios::in | std::ios::out);

或者直接初始化:

std::fstream file("example.txt", std::ios::in | std::ios::out);

3. 檢查文件是否成功打開

if (!file.is_open()) {std::cerr << "無法打開文件" << std::endl;return 1;
}

文件打開模式

fstream 支持多種打開模式,可以用位或運算符 | 組合:

模式標志描述
std::ios::in讀取模式(文件必須存在)
std::ios::out寫入模式(創建或覆蓋文件)
std::ios::app追加模式(所有寫入在文件末尾)
std::ios::ate打開后定位到文件末尾
std::ios::binary二進制模式(避免字符轉換)
std::ios::trunc如果文件存在,先清空內容

讀寫操作

寫入文件

file << "寫入一行文本\n";
file << "數字: " << 42 << std::endl;

讀取文件

std::string line;
while (std::getline(file, line)) {std::cout << line << std::endl;
}

二進制讀寫

// 寫入二進制數據
int data = 12345;
file.write(reinterpret_cast<char*>(&data), sizeof(data));// 讀取二進制數據
int readData;
file.read(reinterpret_cast<char*>(&readData), sizeof(readData));

文件指針控制

獲取當前位置

std::streampos pos = file.tellg();  // 獲取讀取位置
pos = file.tellp();                 // 獲取寫入位置

移動指針

file.seekg(0, std::ios::beg);  // 將讀取指針移動到文件開頭
file.seekp(10, std::ios::cur); // 將寫入指針從當前位置移動10字節

完整示例

#include <fstream>
#include <iostream>
#include <string>int main() {// 打開文件用于讀寫(不存在則創建)std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::trunc);if (!file.is_open()) {std::cerr << "無法打開文件" << std::endl;return 1;}// 寫入數據file << "第一行\n";file << "第二行\n";file << 123 << " " << 3.14 << std::endl;// 回到文件開頭讀取file.seekg(0);std::string line;while (std::getline(file, line)) {std::cout << "讀取到: " << line << std::endl;}file.close();return 0;
}

注意事項

  1. 模式組合fstream 沒有默認模式,必須顯式指定 inout
  2. 文件存在性:使用 in 模式時文件必須存在
  3. 二進制模式:處理非文本文件時應使用 binary 模式
  4. 指針同步:讀寫切換時需要調用 seekg()seekp()
  5. 內存管理:使用 write() 寫入二進制數據時要注意數據對齊

fstream 提供了靈活的文件操作能力,適合需要同時讀寫文件的場景。對于簡單的只讀或只寫操作,可以考慮使用 ifstreamofstream

文件流的成員函數

在 C++ 中,文件流相關的類(如 ifstream, ofstream, fstream)提供了許多成員函數來操作文件。以下是常見的文件流成員函數分類說明:


1. 打開/關閉文件

  • open()
    打開文件,與流關聯。

    void open(const char* filename, ios_base::openmode mode = ios_base::in | ios_base::out);
    
    • filename:文件路徑
    • mode:打開模式(如 ios::in, ios::out, ios::binary, ios::app 等)。
  • close()
    關閉文件,釋放資源。

    void close();
    

2. 狀態檢查

  • is_open()
    檢查文件是否成功打開。

    bool is_open() const;
    
  • good() / eof() / fail() / bad()
    檢查流狀態:

    • good():操作是否正常(無錯誤)。
    • eof():是否到達文件末尾(End-of-File)。
    • fail():操作是否失敗(可恢復錯誤,如類型不匹配)。
    • bad():是否發生嚴重錯誤(如文件損壞)。

3. 讀寫操作

基本讀寫
  • >> (提取運算符)
    從文件讀取數據(格式化輸入)。

    ifstream file("input.txt");
    int value;
    file >> value; // 讀取一個整數
    
  • << (插入運算符)
    向文件寫入數據(格式化輸出)。

    ofstream file("output.txt");
    file << "Hello, World!" << endl;
    
二進制讀寫
  • read()
    從文件讀取二進制數據。

    istream& read(char* buffer, streamsize size);
    
    • buffer:存儲數據的緩沖區。
    • size:要讀取的字節數。
  • write()
    向文件寫入二進制數據。

    ostream& write(const char* buffer, streamsize size);
    

4. 文件指針操作

  • tellg() / tellp()
    獲取當前讀寫位置:

    • tellg():返回輸入流(讀)的指針位置(ifstream)。
    • tellp():返回輸出流(寫)的指針位置(ofstream)。
  • seekg() / seekp()
    移動文件指針:

    istream& seekg(streampos pos); // 移動到絕對位置
    istream& seekg(streamoff offset, ios_base::seekdir dir); // 相對位置移動
    
    • pos:絕對位置。
    • offset:偏移量。
    • dir:基準位置(ios::beg 開頭,ios::cur 當前位置,ios::end 結尾)。

5. 其他功能

  • flush()
    強制刷新輸出緩沖區(立即寫入文件)。

    ostream& flush();
    
  • peek()
    查看下一個字符但不移動指針。

    int peek();
    
  • get() / getline()
    讀取字符或一行:

    int get(); // 讀取單個字符
    istream& getline(char* buffer, streamsize size); // 讀取一行
    

示例代碼

#include <fstream>
#include <iostream>
using namespace std;int main() {// 寫入文件ofstream out("test.txt");if (out.is_open()) {out << "Line 1\nLine 2" << endl;out.close();}// 讀取文件ifstream in("test.txt");if (in.is_open()) {string line;while (getline(in, line)) {cout << line << endl;}in.close();}return 0;
}

注意事項

  1. 模式標志
    • ios::in(讀)、ios::out(寫)、ios::binary(二進制)、ios::app(追加)等可組合使用。
  2. 錯誤處理
    始終檢查 is_open()good() 避免未定義行為。
  3. 資源釋放
    顯式調用 close() 或依賴析構函數自動關閉。

根據需求選擇合適的函數組合即可高效操作文件!

流式文件操作和一般的文件操作函數區別

在 C++ 中,流式文件操作(基于 fstream/ifstream/ofstream)和 一般文件操作函數(基于 C 語言的 FILE* 或系統 API)是兩種不同的文件處理方式,它們在設計理念、使用方式和適用場景上有顯著區別。以下是詳細對比:


1. 設計理念

特性流式文件操作 (fstream 等)一般文件操作函數 (fopen/read/Write 等)
封裝層次高級封裝,面向對象(基于 std::iostream 類體系)低級封裝,面向過程(函數調用)
數據視角將文件視為連續的字符流或對象序列將文件視為字節塊或二進制數據
緩沖區管理自動緩沖(默認),支持手動刷新 (flush)需手動管理緩沖區(如 setvbuf
錯誤處理通過流狀態標志(good(), fail())或異常機制通過返回值(如 NULL-1)和全局 errno

2. 使用方式對比

(1)打開文件
  • 流式操作
    #include <fstream>
    std::ifstream fin("input.txt", std::ios::binary); // 二進制模式
    std::ofstream fout("output.txt");
    
  • 一般函數
    #include <cstdio>
    FILE* fin = fopen("input.txt", "rb");  // C 風格
    int fd = open("input.txt", O_RDONLY);  // POSIX API
    
(2)讀寫數據
  • 流式操作(類型安全):
    int num;
    fin >> num;                  // 格式化讀取(文本)
    fout << "Hello" << std::endl; // 格式化寫入fin.read(buffer, size);       // 二進制讀取
    fout.write(buffer, size);     // 二進制寫入
    
  • 一般函數(直接操作字節):
    fscanf(fin, "%d", &num);     // C 格式化讀取
    fprintf(fout, "Hello\n");fread(buffer, 1, size, fin); // C 二進制讀取
    write(fd, buffer, size);     // POSIX 寫入
    
(3)關閉文件
  • 流式操作(自動析構):
    fin.close(); // 可省略,析構時自動調用
    
  • 一般函數(需顯式關閉):
    fclose(fin); // C 風格
    close(fd);   // POSIX
    

3. 核心區別

對比項流式文件操作一般文件操作函數
類型安全? 支持運算符重載(<</>>),避免類型錯誤? 需手動匹配格式字符串(如 %d vs %f
性能?? 默認有緩沖,適合高頻小數據量操作?? 無緩沖時更快,適合大塊二進制數據
靈活性? 高級封裝,底層控制受限(如精確指針移動)? 直接操作文件描述符/指針,控制更精細
跨平臺性? 標準 C++ 實現,跨平臺一致?? C 庫跨平臺,但系統 API(如 open)需適配
異常支持? 可通過 exceptions() 啟用異常? 僅通過返回值/errno 處理錯誤

4. 適用場景

優先使用流式操作的情況
  • 需要 類型安全 的文本讀寫(如配置文件、日志)。
  • 代碼已基于 C++ 標準庫,希望保持風格統一。
  • 簡單的逐行或格式化數據處理(如 getline 讀取 CSV)。
優先使用一般函數的情況
  • 需要 高性能二進制操作(如大文件拷貝、網絡數據傳輸)。
  • 依賴 系統特定功能(如文件鎖、內存映射)。
  • 遺留項目或與 C 語言交互的代碼。

5. 代碼示例對比

示例 1:復制文本文件
  • 流式操作
    std::ifstream src("source.txt");
    std::ofstream dst("dest.txt");
    dst << src.rdbuf(); // 一行完成拷貝
    
  • 一般函數
    FILE* src = fopen("source.txt", "r");
    FILE* dst = fopen("dest.txt", "w");
    char buffer[4096];
    while (size_t len = fread(buffer, 1, sizeof(buffer), src)) {fwrite(buffer, 1, len, dst);
    }
    fclose(src); fclose(dst);
    
示例 2:讀取二進制數據
  • 流式操作
    std::ifstream file("data.bin", std::ios::binary);
    int value;
    file.read(reinterpret_cast<char*>(&value), sizeof(value));
    
  • 一般函數
    FILE* file = fopen("data.bin", "rb");
    int value;
    fread(&value, sizeof(value), 1, file);
    

總結

  • 流式操作:適合 高層抽象類型安全 的場景,代碼簡潔但靈活性較低。
  • 一般函數:適合 底層控制高性能二進制處理,但需手動管理資源。

根據項目需求選擇合適的方式,現代 C++ 項目推薦優先使用 <fstream>,除非有明確的性能或控制需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Cursor】打開Vscode設置

在這里打開設置界面 打開設置json

智能指針和STL庫學習思維導圖和練習

思維導圖&#xff1a; #include <iostream> #include <vector> #include <string> using namespace std;// 用戶結構體 struct User {string username;string password; };vector<User> users; // 存儲所有注冊用戶// 使用迭代器查找用戶名是否存在 ve…

前端工具方法整理

文章目錄 1.在數組中找到匹配項&#xff0c;然后創建新對象2.對象轉JSON字符串3.JSON字符串轉JSON對象4.有個響應式對象&#xff0c;然后想清空所有屬性5.判斷參數不為空6.格式化字符串7.解析數組內容用逗號拼接8.刷新整個頁面 1.在數組中找到匹配項&#xff0c;然后創建新對象…

狀態空間建模與極點配置 —— 理論、案例與交互式 GUI 實現

目錄 狀態空間建模與極點配置 —— 理論、案例與交互式 GUI 實現一、引言二、狀態空間建模的基本理論2.1 狀態空間模型的優勢2.2 狀態空間模型的物理意義三、極點配置的理論與方法3.1 閉環系統的狀態反饋3.2 極點配置條件與方法3.3 設計流程四、狀態空間建模與極點配置的優缺點…

仿modou庫one thread one loop式并發服務器

源碼&#xff1a;田某super/moduo 目錄 SERVER模塊&#xff1a; Buffer模塊&#xff1a; Socket模塊&#xff1a; Channel模塊&#xff1a; Connection模塊&#xff1a; Acceptor模塊&#xff1a; TimerQueue模塊&#xff1a; Poller模塊&#xff1a; EventLoop模塊&a…

Oracle中的UNION原理

Oracle中的UNION操作用于合并多個SELECT語句的結果集&#xff0c;并自動去除重復行。其核心原理可分為以下幾個步驟&#xff1a; 1. 執行各個子查詢 每個SELECT語句獨立執行&#xff0c;生成各自的結果集。 如果子查詢包含過濾條件&#xff08;如WHERE&#xff09;、排序&…

面試算法高頻04-分治與回溯

分治與回溯 分治和回溯算法&#xff0c;包括其概念、特性、代碼模板&#xff0c;并結合具體題目進行講解&#xff0c;旨在幫助學員理解和掌握這兩種算法的應用。 分治與回溯的概念 分治&#xff08;Divide & Conquer&#xff09;&#xff1a;本質上基于遞歸&#xff0c;先…

線性方程組的解法

文章目錄 線性方程組的解法認識一些基本的矩陣函數MATLAB 實現機電工程學院教學函數構造1.高斯消元法2.列主元消去法3. L U LU LU分解法 線性方程組的解法 看到以下線性方程組的一般形式&#xff1a;設有以下的 n n n階線性方程組&#xff1a; A x b \mathbf{Ax}\mathbf{b} A…

Java的Selenium的特殊元素操作與定位之模態框

Modal Dialogue Box&#xff0c;又叫做模式對話框&#xff0c;是指在用戶想要對對話框以外的應用程序進行操作時&#xff0c;必須首先對該對話框進行響應。如單擊【確定】或【取消】按鈕等將該對話框關閉。 alert&#xff08;警告&#xff09; //訪問本地的HTML文件 chromeDr…

2022年全國職業院校技能大賽 高職組 “大數據技術與應用” 賽項賽卷(1卷)任務書

2022年全國職業院校技能大賽 高職組 “大數據技術與應用” 賽項賽卷&#xff08;1卷&#xff09;任務書 背景描述&#xff1a;模塊A&#xff1a;大數據平臺搭建&#xff08;容器環境&#xff09;&#xff08;15分&#xff09;任務一&#xff1a;Hadoop 完全分布式安裝配置任務二…

題目練習之set的奇妙使用

???~~~~~~歡迎光臨知星小度博客空間~~~~~~??? ???零星地變得優秀~也能拼湊出星河~??? ???我們一起努力成為更好的自己~??? ???如果這一篇博客對你有幫助~別忘了點贊分享哦~??? ???如果有什么問題可以評論區留言或者私信我哦~??? ?????? 個…

Java虛擬機——JVM(Java Virtual Machine)解析一

1.JVM是什么&#xff1f; 1.1 JVM概念 Java Virtual Machine (JVM) 是JDK的核心組件之一&#xff0c;它使得 Java 程序能夠在任何支持 JVM 的設備或操作系統上運行&#xff0c;而無需修改源代碼 JDK是什么&#xff0c;JDK和JVM是什么關系&#xff1f;1.Java IDE(Integrated …

初識 Three.js:開啟你的 Web 3D 世界 ?

3D 技術已經不再是游戲引擎的專屬&#xff0c;隨著瀏覽器技術的發展&#xff0c;我們完全可以在網頁上實現令人驚艷的 3D 效果。而 Three.js&#xff0c;作為 WebGL 的封裝庫&#xff0c;讓 Web 3D 的大門向更多開發者敞開了。 這是我開啟這個 Three.js 專欄的第一篇文章&…

OpenGL ES -> SurfaceView + EGL實現立方體紋理貼圖+透視效果

XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.MySurfaceView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"…

pikachu靶場搭建教程,csfr實操

靶場安裝 靶場下載地址 百度網盤下載地址和密碼 百度網盤 請輸入提取碼 0278 github靶場下載地址 https://gitcode.com/Resource-Bundle-Collection/c7cc1 安裝前提 這兩個文件夾的配置文件都要進行更改修改數據庫密碼 D:\phpstudy_pro\WWW\pikachu\inc D:\phpstudy_pro…

浙江大學DeepSeek系列專題線上公開課第二季第四期即將上線!端云協同:讓AI更懂你的小心思! - 張圣宇 研究員

今晚8點10分左右&#xff0c;端云協同&#xff1a;讓AI更懂你的小心思&#xff01;浙大學者張圣宇研究員將揭秘人機交互新玩法。浙江大學DeepSeek系列專題線上公開課第二季第四期即將上線&#xff01; 講座 主題&#xff1a; 大小模型端云協同賦能人機交互 主講人&#xff1a…

Vue3實戰三、Axios封裝結合mock數據、Vite跨域及環境變量配置

目錄 Axios封裝、調用mock接口、Vite跨域及環境變量配置封裝Axios對象調用mock接口數據第一步、安裝axios&#xff0c;處理一部請求第二步、創建request.ts文件第三步、本地模擬mock數據接口第四步、測試axiosmock接口是否可以調用第五步、自行擴展 axios 返回的數據類型 axios…

Linux如何刪除文件名包含無效編碼字符文件

在Linux中&#xff0c;文件名包含無效編碼字符或特殊不可見字符時&#xff0c;可能導致此文件無法通過常規方式選中或刪除&#xff0c;可以通過下面方法處理 1、確認文件名問題 檢查終端編碼環境 echo $LANG # 默認應為 UTF-8&#xff08;如 en_US.UTF-8&#xff09; 查看…

Completablefuture的底層原理是什么

參考面試回答&#xff1a; 個人理解 CompletableFuture 是 Java 8 引入的一個類、它可以讓我們在多線程環境中更加容易地處理異步任務。CompletableFuture 的底層原理是基于一個名為 FutureTask 的機制、結合了 監聽器模式 和 等待-通知機制 來處理異步計算。 1.首先就是Com…

C/C++ 調用約定:深入理解棧與平棧

前言 在編程中&#xff0c;理解函數調用約定和棧的機制對于編寫高效代碼、調試程序以及進行逆向工程至關重要。本文將深入探討 C 和 C 的調用約定&#xff0c;以及棧與平棧的相關知識。 C 調用約定 在 C 語言中&#xff0c;默認的調用約定是 cdecl。cdecl 調用約定的特點如下&…