1

.txtファイルに書き込む簡単な関数があります。このメソッドは、単純なC++プロジェクトで完全に機能します。ただし、同じ関数をC ++ SmartDeviceProjectで作成した場合、ファイルには何も書き込まれません。

何が問題ですか?

コードサンプルを以下に示します。

STDMETHODIMP CHelloproxy::Hai(void)
{
    CTime t = CTime::GetCurrentTime();

    fstream file("D:\\k.txt", ios::app);

    file << t.GetHour() << ":" << t.GetMinute() << ":" << t.GetSecond() << "-"
         << "Add() operation started..." << endl;

    //file<<t.Format() << "-" << "Add() operation started..." << endl;

    HRESULT hr = proxy->Hai();

    file <<t.GetHour() << ":" << t.GetMinute() << ":" << t.GetSecond() 
         << "-" << "Add() operation finished..." << endl;

    file.close();

    return hr;
}
4

1 に答える 1

2

行fstreamfile( "D:\ k.txt"、ios :: app);の有効性を確認してください。「d:\はスマートフォンに存在しない可能性があります」という意味です。

以下は、fstreamオブジェクトの作成の詳細です。

http://www.cplusplus.com/reference/iostream/fstream/fstream/

"fstream();明示的なfstream(const char * filename、ios_base

:openmode mode = ios_base :: in | ios_base :: out);

オブジェクトを作成し、オプションでファイルを開きますfstreamクラスのオブジェクトを作成します。これは、関連付けられたfilebufオブジェクトの初期化と、filebufオブジェクトをパラメーターとして使用した基本クラスのコンストラクターの呼び出しを意味します。

さらに、2番目のコンストラクターバージョンを使用すると、同じパラメーターで開いているメンバー関数が呼び出されたかのように、ストリームが物理ファイルに関連付けられます。

コンストラクターがファイルを開くことに成功しなかった場合でも、ファイルはストリームバッファーに関連付けられておらず、ストリームのフェイルビットが設定されていますが、オブジェクトは作成されます(継承されたメンバーのフェイルで確認できます)。「」

于 2012-03-05T06:06:46.777 に答える