2

私は本当に奇妙な問題を抱えています。Visual C ++ Expressでは、非常に単純なコードがあります。

#include <fstream>
using namespace std;
int main()
{
fstream file;
file.open("test.txt");
file<<"Hello";
file.close();
}

これと同じコードは私の1つのプロジェクトでも問題なく機能しますが、今すぐプロジェクトを作成して同じコード行を使用すると、ファイルtest.txtは作成されません。何が問題なのですか?¨

編集:最初の機能プロジェクトと同じように、VS2008 / project_name/debugにtest.txtが表示されることを期待しています。

4

5 に答える 5

3

ファイルに書き込む標準コード:

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    ofstream file;
    file.open("test.txt");
    if ( ! file.is_open() ) {
       cerr << "open error\n";
    }

    if ( ! (  file << "Hello" ) ) {
       cerr << "write error\n";
    }

   file.close();

}

ファイル I/O を実行するときは常に、すべての操作をテストする必要があります。ただし、ファイルを閉じる場合は例外であり、通常は回復することはできません。

別の場所に作成されているファイルについては、次のような奇妙な名前を付けmxyzptlk.txtて、Windows エクスプローラーを使用して検索します。

于 2010-05-09T21:27:14.143 に答える
2

おそらく、実行可能ファイルは以前とは異なるディレクトリで実行され、test.txtが別の場所に表示されます。次のような絶対パスを使用してみてください"C:\\Users\\NoName\\Desktop\\test.txt"(C文字列のエスケープ文字として二重の円記号が必要です)。

于 2010-05-09T19:31:28.957 に答える
2

fstream::open()filenameとの 2 つの引数を取りますmode。2番目を提供していないため、デフォルトの引数が何であるかを確認するか、自分でfstream提供することをお勧めしios_base::outます。

さらに、ファイルが開いているかどうかを確認することもできます。現在の作業ディレクトリ(絶対パスを指定しないため、'test.txt' が書き込まれます) への書き込み権限がない可能性があります。これを確認する方法の 1 つとしてメソッドをfstream提供します。is_open()

最後に、コードのインデントについて考えてみましょう。そこには数行しかありませんが、コードはすぐに適切なインデントなしでは読みにくくなります。サンプルコード:

#include <fstream>
using namespace std;
int main()
{
    fstream file;
    file.open("test.txt", ios_base::out);
    if (not file.is_open())
    {
        // Your error-handling code here
    }
    file << "Hello";
    file.close();
}
于 2010-05-09T20:56:51.407 に答える
1

これを修正するには 2 つの方法があります。次のいずれかを行います。

file.open("test.txt", ios::out)

#include <fstream>

using namespace std;

int main()
{
    fstream file;
    file.open("test.txt", ios::out);
    file<<"Hello";
    file.close();
}

または、fstream の代わりに ofstream を作成できます。

#include <fstream>

using namespace std;

int main()
{
    ofstream file;
    file.open("test.txt");
    file<<"Hello";
    file.close();
}
于 2014-12-21T21:47:02.723 に答える
1

プロセス モニターを使用して、ファイル アクセスとプロセスをフィルター処理し、オープン/書き込みが成功しているかどうか、およびディスク上のどこで発生しているかを判断できます。

于 2010-05-09T21:30:54.340 に答える