2017-10-02 20 views
0

のVisual Studio 2013個のウィンドウのVisual Studio C

std::string filename1 = "hold.txt"; 
std::ofstream filex(filename1, std::ios::binary); 
filex << " Hello" << std::endl; 
filex.close(); 

うまく7.

std::string filename1 = "hold.a"; 
std::ofstream filex(filename1, std::ios::binary); 
filex << " Hello" << std::endl; 
filex.close(); 

作品は私にファイル作成の権限拒否エラーを与えます。唯一の違いは、出力ファイルの3文字の拡張子です。

Ifstreamとfopenは同じように動作します。

+4

おそらく 'hold.txt'がカレントディレクトリに既に存在していますか? – litelite

+0

ありがとうございます。 – dfs

+0

どうやって確認しましたか? 'foo.txt'のようなもので試してみましたか? – litelite

答えて

1

あなたの両方のコードは私のために正常に動作しますが、あなたはまたのWin32 APIを使用することができ、ジャストWindows.hを含めると:(あなたが管理者権限を持っている場合)

HANDLE hFile; 
char DataBuffer[] = "This is some test data to write to the file."; 

hFile = CreateFile("foo.txt", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 
    NULL); 

DWORD dwBytesToWrite = (DWORD)strlen(DataBuffer); 
DWORD dwBytesWritten = 0; 

WriteFile(hFile, DataBuffer, dwBytesToWrite, &dwBytesWritten, NULL); 

はところで、管理者としてプログラムを実行します。

+0

と#include をコードの前に貼り付けて貼り付けると、私のコンパイラはhFile = Createfile .....とWriteFileが気に入らない。属性の長いリストとすべての行は、私の目にあなたのものと同じように見えます。 – dfs

+0

@dfsあなたの文章は私には分かりません。今、問題は何ですか? –

+0

私の謝罪。エラーはここにありました。コードがコンパイルされて実行されます。 foo.txtは表示されるはずの場所には表示されません。名前をfoo.txに変更すると、どこに行かなければならないのか正確にわかります。私がこれを調べるほど、ローカルのWindows構成の問題だと思うほどです。私は昨夜自宅でこのバージョンを走らせました。それは私が思うように正確に機能しました。今日は2台のマシンで同じように失敗しました。私は地元の人と話す前に、別のコーダーにそれを実行させ、彼が得たものを見るように頼みます。 – dfs

0

私はこのことを裏付けるすべての人に感謝します。実際の答えは、IT部門がパーミッションを酷使し、マシンを再イメージ化する必要があるということでした。