VC++ exeからdatファイルが開けるのに、VSのF5で実行した際には開けません

このQ&Aのポイント
  • VC++ exeからはdatファイルが開けるが、VSのF5実行で開けない問題が発生しています。
  • VS2010 ProのVC++、Win7環境で、Debugフォルダ内の「test.dat」ファイルがF5実行時に開けません。
  • Debugフォルダ内のexeァイルから実行すれば問題なく「test.dat」ファイルが開けるが、F5実行時は開けません。
回答を見る
  • ベストアンサー

VC++ exeからはdatファイルが開けるのに、

【VC++ exeからはdatファイルが開けるのに、VSのF5で実行した際には開けません。】  今日は、質問させていただきます。どうぞよろしくお願いいたします。  環境:VS2010 ProのVC++、Win7 でございます。  下のコードで、VSからF5(「Debug」と「Win32」選択)で実行すると Debugフォルダ内の「test.dat」が開けないエラーが出て悩んでおりましたが、 その際にDebugフォルダ内に作られたexeァイルから実行すると「test.dat」ファイルが何故か開けております。  fstream fs("test.dat", ios_base::in); string line; stringstream ss; if (!fs.is_open()) { cerr << "File open error" << endl; }  test.datはDebugフォルダ内に入れております。試しにslnファイルがある階層にも入れてみましたが、F5実行の際は開けませんでした。  ファイル名「test.dat」は間違っておりません。Windowsで拡張子を非表示にするようなこともしておりません。  英語サイトなどをずっと検索しておりましたが、いずれも上記のような事で解決しており、参考になる情報を見つける事ができませんでした。。。  どうにかしてF5実行時に開けるようにしたいのですが、行き詰まっております。 もし何かお気づきになられる方がいらっしゃいましたら、是非アドバイスいただけないでしょうか。 もしお詳しい方がいらっしゃいましたら何卒、よろしくお願いいたします。

  • MKT_
  • お礼率99% (329/330)

質問者が選んだベストアンサー

  • ベストアンサー
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.4

フルパス指定でも良いけど…。 ALT+F7でVCのプロパティ ページが開ける。 VC2008では左側に「デバッグ」というのがあってそこを押す。 右側に「作業ディレクトリ」というのがあるので、そこにファイルがあるディレクトリを指定する。 これによればプログラムを修正する必要はない。

MKT_
質問者

お礼

 どうもありがとうございます!!m(_ _)m 開けました^^ ^^ ^^ VS2010にも同様の設定がございました。 この度は誠にありがとうございました!!!!!!m(_ _)m

その他の回答 (3)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

>>warning : unrecognized character escape sequence おお、おもったとおりw \ ではなくて \\ にすれば直ると思います。

MKT_
質問者

お礼

 どうもありがとうございます!!m(_ _)m ¥→\\にいたしましたところ、エラーは消えましたがファイルをまだ開くことが出来ません。。。何故でございましょう(?_?)  ご親切にどうもありがとうございました!m(_ _)m

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.2

VisualStutioから実行した場合のカレントディレクトリはexeの場所ではないですよ。 なので、ファイル名だけではアクセスできません。 以下の方法で確認してみてください。 http://rarara.cafe.coocan.jp/vc/vctips/api.htm exeと同じフォルダを指定したければ、実行形式のパスを取得してデータファイルのパスを作成してください。 実行形式のパスの取得方法も上記リンクに記載されています。

MKT_
質問者

お礼

>VisualStutioから実行した場合のカレントディレクトリはexeの場所ではないですよ。 なんとそうなのでございましたか。(・o・)勉強になります。どうもありがとうございますm(_ _)m  ご提示いただけた方法を使って   fstream fs(PATH & "test.dat", ios_base::in)のように しておけば、他のPCでも汎用性をもてるプログラムになるな~、などと考えてトライしておりますが、サイトをそのままコピペして >char szPath[_MAX_PATH]; >GetModuleFileName( NULL, szPath, MAX_PATH); としますと、コンパイル時にエラーが >error: argument of type "char *" is incompatible with parameter of type "LPWSTR" と出てまいりました。そこで、 >char szCurrentDir[_MAX_PATH];   ↓ >LPWSTR szCurrentDir[_MAX_PATH]; と書き換えてみたり、 >GetModuleFileName( NULL, szPath, MAX_PATH);   ↓ >GetModuleFileName( NULL, *szPath, MAX_PATH); と書き換えておりますが、うまくいきません。。。orz VBの経験は5年以上ございますが、C++は難しいでございますね。。。  もう少し頑張ってまいります!!! ご親切にアドバイスいただき誠にありがとうございました!!m(_ _)m

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

触ったことはないですが、F5のカレントフォルダーが違うのではないでしょうか? であれば、 fstream fs("test.dat", ios_base::in); ではなくて fstream fs("c:\test.dat", ios_base::in); などと、フルパスで指定してみたらどうなるかな? c:\test.dat だか c:\\test.dat かもしれない。

MKT_
質問者

お礼

 どうもありがとうございます!! こんなに早く見ていただけて非常に嬉しいですm(_ _)m "text.dat" ↓ "C:\Users\(ユーザー名)\documents\Visual Studio 2010\Projects\(プロジェクト名)\Debug\test.dat" に書き換えてみましたところ、新しいエラーで >warning : unrecognized character escape sequence なるものが出てまいりましたので、英語サイトを検索しております。パスの文字列の中には使えないような文字はなさそうなのでございますが。。。  ご親切にどうもありがとうございました!!m(_ _)m

関連するQ&A

  • VC++でexeファイルが作成できません

    Visual C++ 2010 を使っているのですが ビルドは成功しているにもかかわらず、「Debug」フォルダにexeファイルが作成されません 設定もいじっていない上、「Debug」フォルダに作られる設定になっていることを確認済みです。 「やさしいC++」という本を見ながらやっています

  • VC++で数値計算をしたいのですが,datファイルの作り方がよく分かりません。

     VC++を使って数値計算をしていますが,肝心のdatファイルの作り方がよく分かりません。  計算結果をMS-DOS上に出すことはできるのですが,VC++で作った場合,プログラムの実行後にMS-DOSへコマンドを打ち込むことができないので,うまくいきません。   どなたか解決策をお教えいただけないでしょうか?

  • VC++から引数付きexeファイルの実行

    タイトルの通り、VC++から外部ファイルを実行したいのですがどのような関数を使えばよいのでしょうか? exeファイルを実行中は親プロセスであるVCのプログラムの方を止めておきたいのです。 出来ればexeファイルは引数付きで実行したいと思いますので、よろしくお願いします。 開発環境はVisualStudio2005です。

  • 【VC2008】実行ファイル(exe)に引数を渡すやり方

    タイトルの実行ファイル(仮にtest.exe)は、バッチファイルにします。 ------------------------------------------------ @echo off test.exe 引数1(文字列) 引数2(整数) ・・・ ------------------------------------------------ やりたい事は、上記の引数の testプロジェクト内での受け取り方です。 開発環境は、VC2008 の CLRコンソールアプリケーションです。 どなたかやり方をご存知の方がいらっしゃいましたら、ご教授の程よろしくお願いいたします。

  • VC++ Windows2000 でリソースが開けない

    環境:Windows2000SP2 Visual C++ 6.0 SP5 VC++ 超初心者です。 MFCアプリウィザード(EXE)でSDIアプリケーションのスケルトンを作成し、手を加えずにビルドしましたが、エラー 「F:\…test5\test5.rc(11) : fatal error RC1015: cannot open include file 'afxres.h'.」 rc.exe の実行エラー が出て実行できません。 また、リソースウィンドウを開いてみると、リソースが一つも表示されずにその代わりに、 「ロードに失敗しました」と表示されています。 VC++をWindows2000で使用する場合には、何かしなければいけないのでしょうか?

  • VC Debugモード

    Visual Stdio .NET 2003 環境のDebugモードについて質問があります。 開発言語は C++です。 今、コマンドライン引数を以下のように設定し、ファイルに保存された 情報を処理するプログラムを作成しています。 test1.exe 0 ./input.txt ↑ [実行ファイル名][検索したい文字][処理したいファイルへのパス] 上のように入力した場合、argcは[3]を返すと思うのですが、Debug モードでいざ実行してみると、値は「4」となっていました。 コマンドライン引数はVCの「プロジェクト」→「**のプロパティ」 →左ウィンドウの「デバッグ」→右ウィンドウの「コマンド引数」に 上のように設定しています。 また、Debugモードでargv[0]を調べたところ、実行ファイルまでのパス が保存されていました。 なぜ、このようになるのでしょうか? あと本題からそれるのですが、ソースの中でVCがDebugモードで動作していることを知る方法はないでしょうか? もし、Debugモードなのかどうかがわかるのであれば、ソースをDebug モード用とReleseモード用とに切り替えられるようにしたいのですが。。。 合わせてお教えください。

  • VS2008で二つのexeファイルを作成する方法

    アプリケーションとそのアプリケーションの設定を行うための画面を 別々のexeファイルから起動させるようにしたいのですが VS2008において一つのソリューションで二つのexeファイルを作成する方法はあるでしょうか? 例えばtestというアプリケーションについて、その実行ファイルがtest.exeの場合 testアプリケーションの設定画面はtest_config.exeという別の実行ファイルを起動して 画面を立ち上げたいと考えています。 通常、一つのソリューションには一つのexeファイルしか作成できないと思うのですが可能でしょうか? それともやはりソリューションを二つ作らなければなりませんか?

  • Windows7にVC++をインストールしましたが

    うまくリビルドできません。リビルドすると LINK : fatal error LNK1104: ファイル "Debug/test.exe" を開けません。 と表示されます。実際、VC++の”開く”から探すとDebugの中は空です。 さらに不思議なことに、コンピュータから開いていくとMyprojectsの中が空になっています。 どういう不具合なのでしょうか。ご存知の方いらっしゃいましたらお教えいただければ幸いです。

  • 以下のように複数のファイルをまとめてexeファイルにするソフトを作りた

    以下のように複数のファイルをまとめてexeファイルにするソフトを作りたいと考えています(開発言語は、C#かVC++)。 (1)フォルダの中にexeファイル、batファイルやテキストファイルが入っています。 (2)(1)のファイルをまとめてexeファイルにします。 (3)(2)のexeファイルを実行すると、まとめられたファイルは解凍されて、解凍されたファイルの内の一つを実行します。 上記を実現する方法をご存じの方、教えて頂けると助かります。 よろしくお願いします。

  • 実行ファイルについて

     OSはWinXPでコンパイラはVC++を使用しています。  作成したプログラム等がVisual Studio Projectsフォルダに保存されて、Debugの中にある実行ファイルが私の場合「program.exe」と保存されています。 その実行ファイルprogram.exeをcmdまでドラッグして実行すると問題なく実行できるのですが、program.exeそのものをクリックして実行すると、プログラムが終了したと同時に画面が消えるようになってしまいます。これを勝手に消えなくするにはどうすればよいのですか?教えてください。 *プログラム自体は問題ありません。