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

參考資料

延伸閱讀

avatar-img
6會員
46內容數
這是新手寫給新手的學習程式語言基礎教學筆記,內容會以C++為主
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
匿名李的沙龍 的其他內容
指標(Pointer)、參考(reference)
if-else判斷 與 for迴圈
賦值、打印、算數運算子、邏輯與關係運算子
指標(Pointer)、參考(reference)
if-else判斷 與 for迴圈
賦值、打印、算數運算子、邏輯與關係運算子
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
Thumbnail
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
※ 必考題一: Command Line 工程師面試時通常不會著墨太多在此科目上,考題只考涵蓋的基本指令。 ※ 說明:Command Line是使用純文字與電腦溝通的方式,和圖形化介面 GUI是不一樣的。 ※ 常用基本指令: pwd=print the current directory:顯
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
Thumbnail
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
※ 必考題一: Command Line 工程師面試時通常不會著墨太多在此科目上,考題只考涵蓋的基本指令。 ※ 說明:Command Line是使用純文字與電腦溝通的方式,和圖形化介面 GUI是不一樣的。 ※ 常用基本指令: pwd=print the current directory:顯
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護