2017-05-30 14 views
1

私の大学教授にC++プロジェクトを送ってもらう必要があります。C++別のディレクトリに.txtファイルを開く

このプロジェクトでは、QWidget、C++クラス、および自分の情報を格納する "データベース"として機能する2つの.txtファイルを使用します。

私がプロジェクトを開くと、.txtファイルに保存されたデータでQListが自動的に埋められます。

問題は、プロジェクト内のデータを使用したい場合、.txtファイルをbuild-directoryに置く必要があることです。

すべての.cppファイルと.hファイルが格納されているディレクトリに.txtファイルを置く方法がありますか?

iは、ファイルを開くために使用されるコード:

std::ifstream in("file.txt"); 

が、それはビルドディレクトリ内にある場合にのみファイルを開きます。プロジェクトがファイルを探すパスを変更したいと思います。

おかげ

+3

[作業ディレクトリの外でC++でファイルを開く](https://stackoverflow.com/questions/10093891/opening-a-file-in-c-outside-of-the-working-directory) ) –

+0

最も簡単な修正は、ユーザーがコマンドラインから必要なパスでファイル名を渡すようにすることです([QCommandLineParser](http://doc.qt.io/qt-5/qcommandlineparser.html)を参照)。それはほとんどの状況で動作します。 – stefaanv

+0

@ Android400この質問はおそらく以前に聞かれたことに同意しますが、OPの問題はあなたが提供するものと似ていません。ベースのOP問題は、別のディレクトリに移動する方法を知らず、提供された質問がこの問題に対処しなかった。 – Logman

答えて

0

それが重複質問で述べたように、手動パス指定を考慮していない場合、私はこの

auto dbFilePath = QStandardPaths::locate(QStandardPaths::AppDataLocation, "file.txt", QStandardPaths::LocateFile); 

または/およびQCoreApplication::applicationDirPathようQStandardPathsのいずれかを使用することをお勧めします。

これらのうちの1つを使用するか、現在の作業ディレクトリから独立してファイルを見つけるために、これらの2つに基づいてロジックを書きます。そのような場合には、ファイルをプリインストールする必要があることを覚えておいて、ファイルとしてリソースとして出荷することができます。相対パスは、あなたのケースのように提供されている場合(あなたも「の/ etc /ファイル」または「:\\ Windowsの\\ファイルC」のような絶対パスを提供することができます../folder/file.txt

0
  • オプション1:あなたは、あなたの操作を終えたら、現在のディレクトリを設定するためにSetCurrentDirectory()を使用する必要があり、現在のディレクトリを設定する前に、古いものに、それを元に戻すには、することにより、現在のディレクトリを取得することができますGetCurrentDirectory()を使用して、操作後にこれをキャッシュに保存してから、SetCurrentDirectory()を使用して再度設定してください。

  • オプション2:ファイルの絶対パス(絶対パス)を渡す必要があります。

0

あなたは相対パスを使用することができます) "/"(または "\\")と ".."を使用してサブディレクトリに移動し、 "../Data/file"のような親ディレクトリに移動することができます。この詳細についてはhereをご覧ください。作業ディレクトリ(開始ディレクトリ)は、デフォルトでは "exe"ファイルがありますが、アプリケーションの内側と外側から変更することができます。

は、すべての.cppと.hファイルを保存するディレクトリに.txtファイルを置くための方法です

このディレクトリが正常にされていません。しかし、あなたが望むものの一つの問題がありますアプリケーションにはソースコードのみが含まれており、おそらくアプリケーションとともに出荷する必要はありません。

関連する問題