1

分享

C++ 新手教學8

檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
c語言 新手教學

匿名李

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

相對路徑:相對位置
ex:學校在我的左手邊100公尺。
向上
  • ./ 當前位置
  • ../ 上一層位置
  • ../../ 上上一層位置
向下
  • ./ 當前位置
  • ./xxx 下一層位置
  • ./xxx/ooo 下下一層位置
  

./test.txt

絕對路徑:絕對位置
ex:我在座標(0,100)的位置。
  

C:\\Users\\user\\Desktop\\探路客新手教學\\test.txt

c語言 新手教學

test.txt

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

檔案讀入、匯出

標頭檔
  

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

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

IO運算子
  

<<與>>

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

>>:讀取 (cin>>x)

c語言 新手教學

IO運算子

Output
  

x = 5 y = 10 z = 15

c語言 新手教學

檔案位置

c語言 新手教學

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

}

c語言 新手教學

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

c語言 新手教學

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

Output

c語言 新手教學

input

c語言 新手教學

ouput


參考資料

[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語言  #新手教學 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • Python新手學習0
  • 下一篇
  • 13. Roman to Integer (C++)
  • 更多文章
    載入中... 沒有更多了