C++ 新手教學8

更新 發佈閱讀 8 分鐘

檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出

raw-image

檔案路徑(相對路徑、絕對路徑)



相對路徑:相對位置

ex:學校在我的左手邊100公尺。

ex:檔案在現在位置的上一層位置

向上

  • ./ 當前位置
  • ../ 上一層位置
  • ../../ 上上一層位置

向下

  • ./ 當前位置
  • ./xxx 下一層位置
  • ./xxx/ooo 下下一層位置
./test.txt



絕對路徑:絕對位置


ex:我在座標(0,100)的位置。

ex:檔案在C槽裡Users資料夾的user資料夾裡

C:\\Users\\user\\Desktop\\探路客新手教學\\test.txt
raw-image
  • 備註1:程式中檔案位置的輸入需用(" ")包住。ex:"./test.txt"
  • 備註2:加上 \ 表示跳脫,c++中\\是一種跳脫字元,它表示一個\(反斜線)
  • 備註3:資料夾與檔案名稱應盡量使用英文表示,以免無法正常讀取

檔案讀入、匯出


標頭檔

#include <iostream> // 從一個給定的檔案讀取

#include <fstream> // 讀寫一個給定的檔案

IO運算子

<<與>>

<<:輸出 (cout<<"印出來"<<endl)

>>:讀取 (cin>>x)
raw-image

Output

x = 5 y = 10 z = 15
raw-image
raw-image


檔案讀入(fstream運算)



  • fstream fstrm(s);

創建fstrm並開啟叫做s的檔案

fstrm.good(); 確定檔案的資料流傳送正常

fstrm.is_open(); 是否有成功開啟檔案,回傳bool(true or false)

fstrm.close(); 關閉檔案


  • std::istream::getline

從一個檔案,讀取“一行”輸入到給定的string中

fstream inp(filename); //創建inp並開啟叫做filename的檔案
string rest;
std::getline(inp, rest); //持續提取inp,直到rest停止

備註(檔案讀到最後,想從頭開始再讀一次):

inp.clear();
inp.seekg(0, inp.beg);


檔案匯出(ofstream運算)



  • ofstream ofstrm(s);

創建fstrm並開啟叫做s的檔案

outp.close(); //關閉檔案


練習

X,Y,Z文字檔(.txt)

【test.txt】
5 10 15
20 30 40
70 80 90
1 2 3
7 8 9
0 1 0

Code

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

int main(){

vector<int> xx; //放x座標

vector<int> yy; //放y座標

vector<int> zz; //放z座標

// 【檔案讀入】

fstream inp("./test.txt");

if (! inp.good()) {

return false;

}

string rest;

int line = 0;

while(std::getline(inp, rest)){

line++; //一行一行讀,每行讀完都+1

}

inp.clear();

inp.seekg(0, inp.beg);

for (size_t i = 0; i < line; i++) {

int x, y, z;

string rest;

inp >> x >> y >> z;

xx.push_back(x); //存入x座標

yy.push_back(y); //存入y座標

zz.push_back(z); //存入z座標

std::getline(inp, rest);

}

// 【檔案匯出】

ofstream outp("./test_output.txt"); //創建outp並開啟叫做filename的檔案

if (! outp.good()) {

return false;

}

outp << "XYZ座標 " << "\nint x int y int z";

for (size_t i = 0; i < line; i++) {

outp << "\n" << xx[i] << " " << yy[i] << " " << zz[i];

}

outp.close(); //關閉檔案

}
raw-image
raw-image

Output

raw-image
raw-image


參考資料

[1]. ios::good - C++ Reference (cplusplus.com)

[2]. istream::getline - C++ Reference (cplusplus.com)

[3]. 記錄用: 105.07.03 C++計算讀取檔案行數 (aben20807.blogspot.com)

[4]. C\C++编程中:相对路径+绝对路径 - vranger - 博客园 (cnblogs.com)

[5]. 跳脫字元 | C++與演算法 (ntu.edu.tw)


延伸閱讀

下一篇:C++ 新手教學9 | 方格子 (vocus.cc)

上一篇:C++ 新手教學7 | 方格子 (vocus.cc)

目錄:C++ 新手教學目錄 | 方格子 (vocus.cc)

留言
avatar-img
匿名李的沙龍
7會員
46內容數
這是新手寫給新手的學習程式語言基礎教學筆記,內容會以C++為主
匿名李的沙龍的其他內容
2021/10/09
這是一個新手寫給新手的新手教學
Thumbnail
2021/10/09
這是一個新手寫給新手的新手教學
Thumbnail
2021/10/09
break、continue、更進一步的for迴圈、while迴圈、switch
Thumbnail
2021/10/09
break、continue、更進一步的for迴圈、while迴圈、switch
Thumbnail
2021/10/09
2021/10/09
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
Thumbnail
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
Thumbnail
Visual studio code(VS Code),Hello World !
Thumbnail
Visual studio code(VS Code),Hello World !
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News