簡體   English   中英

如何在C ++中打開具有相對路徑的文件?

[英]How to open a file with relative path in C++?

我現在正在編寫測試用例,並創建了一些我嘗試閱讀的測試文件。 絕對路徑是:

/home/user/code/Project/source/Project/components/Project/test/file.dat

但是出於明顯的原因,用絕對路徑進行測試是不好的。 所以我嘗試將絕對路徑轉換為相對路徑,我不知道為什么它不起作用。 我用相對路徑創建了一個文件

findme.dat

我找到了它

/home/user/code/Project/build/source/Project/components/Project/test/findme.dat

所以我創建了相對路徑

/../../../../../../source/Project/components/Project/test/file.dat

但文件未打開且與is對象無關, std::ifstream is (path); is.is_open()函數返回fulse。

你能幫助我嗎?

你所使用的並不是一條相對的道路。 當然你使用的是相對路徑語法,但不是它的實際含義。

/../../../../../../source/Project/components/Project/test/file.dat

這個路徑以/開頭,這意味着root然后找到它再次返回root的父節點,因為root沒有父節點並且繼續...這個的簡化版本是:

/source/Project/components/Project/test/file.dat

所以它會在root中查找當然不存在的文件夾源。

你應該做的是這樣的(假設你的代碼在項目文件夾中):

./test/file.dat

或者如果它在Project文件夾中的某個其他文件夾中,您可以執行以下操作:

../test/file.dat

../帶你到你當前代碼目錄的父目錄,在這種情況下假設是Project。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM