2021-10-09|閱讀時間 ‧ 約 7 分鐘

C++ 新手教學8

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

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

相對路徑:相對位置
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) :讀取 (cinx) 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(){ vectorint xx; //放x座標 vectorint yy; //放y座標 vectorint 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 參考資料 [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)

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.