掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CSVの読み書きについて (ID:70696)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あれから色々試行錯誤してますが、思うようになりません。 csvを読み込み、内容を構造体にセット。セットした内容をcsvにして出力、といったことをやってるんですが・・・・・・。 csv出力のところで詰まってしまいました。 USER.csv ID NAME PASSWORD aa 山田 aa bb 加藤 bb cc 田中 cc dd 石井 dd ヘッダに定義してある構造体 // ユーザ情報 typedef struct _USER_INFO { CString csUserId; // ユーザID CString csUserName; // ユーザ名 CString csUserPass; // ユーザパスワード } USER_INFO, *LPUSER_INFO; // ユーザ情報リスト typedef std::vector <LPUSER_INFO> USER_INFO_LIST; typedef std::vector <LPUSER_INFO> * LPUSER_INFO_LIST; bool CNoticeDlg::OutPutCSVFile() { LPUSER_INFO pstUserInfo; pstUserInfo = new USER_INFO; HANDLE hFile; CStdioFile stdWriteFile; CString wstr; LPTSTR rstrBuf = NULL; int err = 0; // ファイル名 CString csMakeUserCsvFilePath = _T( "C:\\Users\\sampleUsers.csv" ); // ファイル作成 hFile = CreateFile( csMakeUserCsvFilePath, // ファイル名 GENERIC_READ|GENERIC_WRITE, // 読み書きアクセス FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, // このファイルに特に属性を設定しない NULL ); // 失敗時 if( hFile == INVALID_HANDLE_VALUE ) { AfxMessageBox(_T("ファイル作成失敗")); return FALSE; } //ハンドルを閉じる CloseHandle( hFile ); CFile file; int len; char szBuff[128]; if ( !file.Open( csMakeUserCsvFilePath, CFile::modeCreate | CFile::modeWrite ) ) { MessageBox( csMakeUserCsvFilePath + _T("Open error!") ); return FALSE; } //書き込み for (size_t i=0; i<m_lpvUserInfoList->size(); i++) { pstUserInfo = m_lpvUserInfoList->at(i); sprintf_s(szBuff, "%s,%s,%s", pstUserInfo->csUserId, pstUserInfo->csUserName, pstUserInfo->csUserPass ); len = (int)strlen(szBuff); szBuff[len]=0x0d; len++; szBuff[len]=0x0a; len++; file.Write( szBuff, len ); } file.Close(); return TRUE; } これで出力すると、極端な話 I N P a 山 a b 加 b c 田 c d 石 d と先頭の一文字しか出力されず、しかも日本語の部分が文字化けして表示されてしまいます。構造体のなかにはきちんと化けずにセットされています。 原因がちょっとわかってないので、処理が間違っている等どなたかアドバイスしていただけるとありがたいです。 どうぞ宜しくお願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.