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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
Thumbnail
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News