2016-08-01 42 views
-2

我已經用C++編寫了一個程序,它檢查文本有多少個單詞。 文本存儲在與.exe文件相同的目錄中的.txt文件中。我想知道是否有辦法讓我的.txt文件的名稱不相關,只要.txt文件與我的.exe文件位於同一目錄中?我希望能夠更改.txt文件的名稱,並仍能夠成功運行我的程序,而不會收到「錯誤打開文件」消息。從具有未指定名稱但具有已知目錄的.txt文件讀取C++

+0

你有兩個問題:首先是沒有*標準*的方法來列出C++中的目錄內容([至少還沒有](http://en.cppreference.com/w/cpp/filesystem))。你必須使用操作系統功能。第二個問題是你的目錄並不是真正知道的。 [有可能操作系統特定的功能,以及雖然](http://stackoverflow.com/questions/1528298/get-path-of-executable)。 –

+0

@DimChtz:沒有用於獲取調用進程的可執行路徑的標準API(除非您計算'argv [0]',但只適用於控制檯應用程序,並且可能存在)。 –

+3

當該目錄中有兩個或更多文本文件時會發生什麼?也許你應該要求文件名在命令行上傳遞。 –

回答

0

您需要枚舉應用文件夾中的文件,直到找到一個文件擴展名爲.txt的文件。

但是,標準C++庫沒有任何內容可以處理這個問題。

你需要使用特定平臺的API ,以確定您的應用程序運行的文件夾,然後就可以使用特定平臺的API ,或第三方的跨平臺API 枚舉該文件夾中的文件。

一旦你發現文件,只有這樣你才能打開它。

:(如解析的GetModuleFileName() Windows上的結果)
:(在Windows上像FindFirstFile()FindNextFile()
:(像boost::filesystem

+0

C++ 17 [文件系統庫](http://en.cppreference.com/w/cpp/filesystem)幾乎與'boost :: filesystem'類似,所以值得一提。 –

+1

@MilesBudnek:雖然這是一段時間了。考慮到許多人還沒有使用C++ 11,他們很可能不會馬上跳到C++ 17。 –

相關問題