簡體   English   中英

C ++我應該如何發送讀取特定.txt文件的項目?

[英]C++ How should I send project that reads specific .txt files?

我有一個C ++項目,我想以可執行形式發送給某人。 問題是程序必須從我創建的.txt中讀取(特定的分隔符)。 當前,我的程序從特定於我計算機的文件路徑parseFile(“ / Users / David / Desktop / FinalProject / Store.txt”)讀取;

我如何將.txt文件和可執行文件打包在一起,在哪里執行。 專門從任何人的機器上的那個.txt讀取?

注意:我正在使用Xcode

更改程序以接收“文件路徑”作為參數。 使用該程序編寫注釋(ReadMe)以指定文件格式,並在程序包中添加示例數據文件

tl; dr:如果只是將文本文件與可執行文件放在同一文件夾中,則可以使用parseFile("Store.txt");打開它parseFile("Store.txt");

在大多數運行時實現中,都有“工作目錄”的概念。 當您通過圖形外殼打開可執行文件時(通過雙擊可執行文件或類似的操作),工作目錄與可執行文件所在的目錄相同。

現在,如果您嘗試通過不完全限定的路徑在程序中打開文件,則使用的路徑將相對於工作目錄。

完全限定路徑是指向文件系統中單個實體的離散路徑。 "/Users/David/Desktop/FinalProject/Store.txt"就是這樣一個示例,因為它始於根目錄( /在* nix上為/ ,在Windows上為DriveLetter:\\ ),並確切說明了需要遍歷哪些目錄才能到達文件。

未完全限定的路徑(基本上意味着該路徑不是從文件系統的根開始)可用於執行相對文件尋址。 大多數運行時將假定所有未完全限定的路徑都相對於工作目錄,這基本上意味着實際上打開的路徑是將您提供的路徑連接到工作目錄末尾的結果。

例如,如果您打開二進制文件(存儲為/Users/David/Desktop/FinalProject/a.exe ,則工作目錄將設置為/Users/David/Desktop/FinalProject/ 如果您的程序隨后嘗試打開"Store.txt" ,則運行時將看到您正在嘗試打開一個不完全限定的路徑,因此它將假定您打算打開相對於工作目錄的文件。然后將是/Users/David/Desktop/FinalProject/ + Store.txt ,它將是/Users/David/Desktop/FinalProject/Store.txt

這樣做的好處是,如果您移動二進制文件,那么工作目錄也會移動。 如果移動a.exe沿Store.txt/Users/David/Desktop/FinalProject(copy)/ ,那么當你打開/Users/David/Desktop/FinalProject(copy)/a.exe ,工作目錄將是/Users/David/Desktop/FinalProject(copy)/現在,現在調用parseFile("Store.txt") ,它將打開/Users/David/Desktop/FinalProject(copy)/Store.txt 移動到其他計算機時也是如此。

值得注意的是,如果您的二進制文件是從命令行實用程序運行的,則工作目錄通常是命令行外殼程序所在的目錄,而不是可執行文件的目錄。 但是,C標准的一部分是main()的第一個命令行參數應該是可執行文件的名稱,並且大多數實現都為您提供了完全限定的路徑。 通過一些最少的解析,您可以使用該解析來確定用作文件尋址基礎的路徑。

暫無
暫無

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

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