CFile→CStdioFileの変換で書込みが出来ない – プログラミング – Home

通知
すべてクリア

[解決済] CFile→CStdioFileの変換で書込みが出来ない


lj
 lj
(@lj)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

CFileをCStdioFileに変換してファイルの読み書きを行いたいと思い、
以下のソースで実行してみました。
動かした際、読込みは出来るのですが、書込みが出来ません。
原因が分かる方いらっしゃいましたらご教授をお願いします。

環境:WinXP、VisualC+6.0、MFC

#include <Fcntl.h>

#if !defined (_MSC_VER) || (_MSC_VER < 1400)
typedef long intptr_t;
#endif //_MSC_VER

BOOL FileConvertTest()
{
const unsigned int OPEN_W = CFile::modeCreate | CFile::modeWrite;
const unsigned int OPEN_A = CFile::modeCreate | CFile::modeWrite |
CFile::modeNoTruncate;
const unsigned int OPEN_R = CFile::modeRead;

CString path = 00001.txt, str1, str2 = 書込み;

CFile file1;
CStdioFile* std1;

CFileException e;

unsigned int uFlag = OPEN_R; //読込み
// unsigned int uFlag = OPEN_W; //書込み

if(! file1.Open(path, uFlag, &e)) return(FALSE);

int nMode = 0;
TCHAR szMode[5];
memset(szMode, 0x00, sizeof(szMode));

if (uFlag == OPEN_W){szMode[0] = 'w'; nMode = _O_WRONLY | _O_CREAT |
_O_TRUNC ;}
else if(uFlag == OPEN_A){szMode[0] = 'a'; nMode = _O_WRONLY | _O_CREAT |
_O_APPEND;}
else if(uFlag == OPEN_R){szMode[0] = 'r'; nMode = _O_RDONLY;}
else {return(FALSE);}
szMode[1] = 'b';
int nCrtFile = _open_osfhandle((intptr_t)file1.m_hFile, nMode);

if(nCrtFile == -1) return(FALSE); //エラー時

std1 = new CStdioFile(_tfdopen( nCrtFile, szMode));

if(std1->m_pStream == NULL) return(FALSE); //エラー時

try
{
std1->ReadString(str1); //読込み
//std1->WriteString(str2); //書込み
}
catch(CFileException* pE){
return(FALSE);
}

file1.Close();

delete std1;

return(TRUE);
}


引用未解決
トピックタグ
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

> std1->WriteString(str2); //書込み

これのあとに

std1->Flush();

をいれてみて


返信引用
lj
 lj
(@lj)
ゲスト
結合: 15年前
投稿: 9
Topic starter  

解決しました。
有難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました