[C/C++]相對路徑&絕對路徑 斜杠&反斜線的區別

來源:互聯網
上載者:User
檔案路徑:正斜杠和反斜線

正斜杠,又稱左斜杠,符號是"/";反斜線,也稱右斜杠,符號是"\"。

 

檔案路徑的表示可以分為絕對路徑和相對路徑:

 

絕對路徑表示相對容易,例如:

pDummyFile =fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb");給出了從盤符開始的全部路徑,這裡需要注意的是“\”要用雙斜線"\\",vc工程預設訪問的目錄是工程目錄,

 

相對路徑有以下多種形式,例如:

pDummyFile = fopen("dummy.bmp", "rb"); bmp檔案就在vc工程目錄下,和dsw檔案同屬一個目錄。
pDummyFile = fopen("..\\texture\\dummy.bmp", "rb"); 表示bmp檔案在工程目錄的同級目錄texture中,因此路徑是先退出工程目錄再進入texture目錄訪問到bmp檔案。“..”表示退到目前的目錄的上一級目錄(父目錄)
pDummyFile =fopen(".\\texture\\dummy.bmp", "rb"); 表示bmp檔案就在工程目錄的子目錄texture中,“.”表示當前預設目錄,即vc工程目錄,然後在進入其子目錄texture訪問到檔案

值得注意的是:對相對路徑而言,路徑表示中的“\”也要用雙斜線\\。因為c++中\\是一種逸出字元,他表示一個\,就像\n表示斷行符號一樣。

所以C++中的路徑名:

D:\matcom45\doc\users\_themes\m.dat

應為:

CString filename=_T("D:\\matcom45\\doc\\users\\_themes\\m.dat");或

CStringfilename=_T("D:/matcom45/doc/users/_themes/m.dat");
"./" 加不加都一樣,就是指目前的目錄

"../" 表示目前的目錄的上級目錄,即當前的父目錄。

 

 

在Unix/Linux中,路徑的分隔採用正斜杠"/",比如"/home/hutaow";

而在Windows中,路徑分隔採用反斜線"\",比如"C:\Windows\System"。


  有時我們會看到這樣的路徑寫法,"C:\\Windows\\System",也就是用兩個反斜線來分隔路徑,這種寫法在網路應用或編程中經常看到,事實上,上面這個路徑可以用"C:/Windows/System"來代替,不會出錯。但是如果寫成了"C:\Windows\System",那就可能會出現各種奇怪的錯誤了。至於上述問題出現的原因,要從字串解析這方面來分析。學過編程的人都應該知道,在C裡面,輸出字串時,如果想輸出一個換行,那就要加上'\n'這個標誌,類似的,輸出一個TAB,就加上'\t',也就是說,反斜線("\")這個符號會把跟在它後面的字元結合起來轉義成其它字元。根據這個原理,如果想輸出雙引號('"'),就需要輸入'\"',這樣才會將包含了雙引號的字串正確的寫入記憶體中。那麼如果想輸入一個反斜線呢?很簡單,只要敲'\\'就可以了。
  看到這裡或許有些人已經看出眉目了,如果"C:\Windows\System"這個路徑字串交給C編譯器編譯,實際寫入記憶體的字串並沒有包含反斜線"\",甚至緊跟在反斜線後面的字母也一起被轉義成了其它的字元,再次調用的話勢必會出問題。  

       字串解析不僅僅局限於C編譯器,Java編譯器、一些設定檔的解析、Web伺服器等等,都會遇到對字串進行解析的這個問題,由於傳統的Windows採用的是單個斜杠的路徑分隔形式,導致在對檔案路徑進行解析的時候可能發生不必要的錯誤,所以就出現了用雙反斜線"\\"分隔路徑的形式。不管解析引擎是否將反斜線解析成逸出字元,最終在記憶體中得到的都是"\",結果也就不會出問題了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.