C++ 新手教學8

閱讀時間約 7 分鐘
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
匿名李

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

相對路徑:相對位置

ex:學校在我的左手邊100公尺。
ex:檔案在現在位置的上一層位置
向上
  • ./ 當前位置
  • ../ 上一層位置
  • ../../ 上上一層位置
向下
  • ./ 當前位置
  • ./xxx 下一層位置
  • ./xxx/ooo 下下一層位置
./test.txt

絕對路徑:絕對位置


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

檔案讀入、匯出

標頭檔

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

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

IO運算子

<<與>>

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

>>:讀取 (cin>>x)
IO運算子
Output
x = 5 y = 10 z = 15
檔案位置
test.txt


檔案讀入(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(); //關閉檔案

}
X,Y,Z文字檔(1/2)
X,Y,Z文字檔(2/2)

Output

input
ouput

參考資料

延伸閱讀

6會員
46Content count
這是新手寫給新手的學習程式語言基礎教學筆記,內容會以C++為主
留言0
查看全部
發表第一個留言支持創作者!
匿名李的沙龍 的其他內容
指標(Pointer)、參考(reference)
if-else判斷 與 for迴圈
賦值、打印、算數運算子、邏輯與關係運算子
指標(Pointer)、參考(reference)
if-else判斷 與 for迴圈
賦值、打印、算數運算子、邏輯與關係運算子
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }
Thumbnail
巢狀迴圈For loop介紹結構及範例說明 巢狀迴圈 巢狀迴圈是在一個迴圈內包含另一個迴圈的結構 簡單來說,就是內迴圈做完,才會在跑到外迴圈,接著在做內迴圈
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
練習 bmi的計算 BMI的公式為 體重(公斤)/((身高(公尺))^2) (註:^是次方的意思) 這個問題有用到平方的計算, 如果我要將一個數字平方,在c++時可以怎麼用呢? 1.使用pow函數 pow(參數1,參數2) 參數一代表的是底數,參數2代表的是指數 pow(x,y)=
Thumbnail
C# 介面 ( C# Interface ) – (C#教學) – 介面就是類別的接口, 就好像在電插一樣, 不同的電器有同一類與電力的接口. 要編程就像一個布局, 當引用一個class時, 會引用不同的method, property. 如果method的class可以轉換, 就大大簡化了編程.
Thumbnail
C# Dictionary – (C#教學) – Dictionary 就是包含keys list 及 value list 的一個集合. 在集合中, 每一行的key也會Map在value上, 只需要加入Key就可取得值. 相關頁面:
Thumbnail
C# List – (C#教學) – 所謂List, 就是把多個同類的variable串列在一起. 加上for, foreach迴圈的使用, 令他們可以作出相同的行為. 相關頁面: C# 陣列 – 學會Array陣列基本5種應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }
Thumbnail
巢狀迴圈For loop介紹結構及範例說明 巢狀迴圈 巢狀迴圈是在一個迴圈內包含另一個迴圈的結構 簡單來說,就是內迴圈做完,才會在跑到外迴圈,接著在做內迴圈
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
練習 bmi的計算 BMI的公式為 體重(公斤)/((身高(公尺))^2) (註:^是次方的意思) 這個問題有用到平方的計算, 如果我要將一個數字平方,在c++時可以怎麼用呢? 1.使用pow函數 pow(參數1,參數2) 參數一代表的是底數,參數2代表的是指數 pow(x,y)=
Thumbnail
C# 介面 ( C# Interface ) – (C#教學) – 介面就是類別的接口, 就好像在電插一樣, 不同的電器有同一類與電力的接口. 要編程就像一個布局, 當引用一個class時, 會引用不同的method, property. 如果method的class可以轉換, 就大大簡化了編程.
Thumbnail
C# Dictionary – (C#教學) – Dictionary 就是包含keys list 及 value list 的一個集合. 在集合中, 每一行的key也會Map在value上, 只需要加入Key就可取得值. 相關頁面:
Thumbnail
C# List – (C#教學) – 所謂List, 就是把多個同類的variable串列在一起. 加上for, foreach迴圈的使用, 令他們可以作出相同的行為. 相關頁面: C# 陣列 – 學會Array陣列基本5種應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈