プロが教える店舗&オフィスのセキュリティ対策術

visual stdio 2013 デスクトップ版のものを使い、下に書くプログラムを作ったのですが、
visual stdio 2013では、ファイルが開けませんとなり、途中で、終了してしまうのですが、mingwでは、ちゃんとファイルが開けて、プログラムが、最後まで動作するのですが、なぜでしょうか?
原因を詳しく教えてください。また、改善方法も教えてください。

プログラム

#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <list>
#include <string>
using namespace std;

int main()
{
srand((unsigned)time(NULL));
list<string> str;
char sstr[255];
int count = 0;
int i;
ifstream in("ttest", ios::in | ios::binary);

if (!in){
cout << "入力ファイルが開けません\n";

getchar();
return 1;
}

while (!in.eof()){
in.getline(sstr, 255);
str.push_back(sstr);
count++;
}

i = rand() % count
;
list<string>::iterator p;
p = str.begin();

for (int j = 2; j <= i; j++)p++;

cout << *p;
cout << endl;


getchar();
return 0;
}

A 回答 (1件)

>visual stdio 2013では、ファイルが開けませんとなり、途中で、終了してしまうのですが、


>mingwでは、ちゃんとファイルが開けて、プログラムが、最後まで動作するのですが、なぜでしょうか?

こういう時の「お約束」ですが…
『カレントディレクトリ』って言葉は知っていますか?
フルパスで指定していないので、カレントディレクトリからの相対パスになります。
その際にカレントディレクトリが何処なのか…と言うことを意識しないと、
「ファイルはあるはずなのにオープンに失敗する」ということになります。
オープンに失敗しているのであると思っているファイルは「カレントディレクトリから見ると」無いんですよ。

Visual Studioなら、プロジェクトの設定でカレントディレクトリ(作業ディレクトリとか書かれているかもしれない)を設定できます。
    • good
    • 0
この回答へのお礼

できました!!!!
ありがとうございました。
カレントディレクトリという言葉は知っていたのですが、それがどこで設定できるかもわからなかったので、ありがとうございました。

お礼日時:2014/09/27 23:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!