メモ、備忘録、その他雑記を記載します。
ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
#include <fstream>
#include <string>
// プロトタイプ宣言
void ReadFileFnc();
int main()
{
ReadFileFnc();
return 0;
}
void ReadFileFnc()
{
// 1行ずつ読み込む
std::string strLine;
// ロケール設定
// これをしないと以下のfi.is_open()で日本語を含むパスの
// ファイルオープンで失敗する
std::locale::global(std::locale("japanese"));
// ファイルを読み込み用に開く
std::ifstream fi("./test.txt");
if (!fi.is_open()) {
// ファイルが読み込み用に開けない
return;
}
// 1行ずつ読み込み
while (std::getline(fi, strLine)) {
// 読み込んだ1行に対する処理
// (読み込んだ1行はstrLineに入る)
printf("%s\n", strLine.c_str());
}
// ファイルを閉じる
fi.close();
return;
}
PR
// インクルード
// 要素取得/表示
#pragma warning(disable:4100) // C4100警告非表示
#pragma warning(disable:4786) // C4786警告非表示
#include <map>
// mapオブジェクト定義
std::map<CString, CString> m_mapStr;
// 入力用のエディットコントロール
CEdit m_edtDat;
// 要素巡回
// 要素設定/追加
// mapオブジェクト定義
std::map<CString, CString> m_mapStr;
// 入力用のエディットコントロール
CEdit m_edtDat;
CEdit m_edtKey;
// 要素設定
m_mapStr[_T("な")] = _T("泣きっ面に蜂");
m_mapStr[_T("い")] = _T("犬も歩けば棒に当たる");
m_mapStr[_T("に")] = _T("二度あることは三度ある");
m_mapStr[_T("さ")] = _T("三度目の正直");
m_mapStr[_T("か")] = _T("河童の川流れ");
// 要素巡回
// 要素数表示
int iSize = 0;
iSize = m_mapStr.size();
TRACE(_T("map size[%d]\n"), iSize);
// 巡回表示
std::map<CString, CString>::iterator it;
std::map<CString, CString>::iterator ite = m_mapStr.end();
for (it = m_mapStr.begin(); it != ite; it++) {
TRACE(_T("キー[%s] データ[%s]\n"), (LPCTSTR)(it->first), (LPCTSTR)(it->second));
}
CString strKey;
CString strDat;
m_edtKey.GetWindowText(strKey);
m_edtDat.GetWindowText(strDat);
m_mapStr[strKey] = strDat;
// 要素取得/表示
CString strKey;
CString strDat;
int iCount = 0;
m_edtKey.GetWindowText(strKey);
m_edtDat.GetWindowText(strDat);
iCount = m_mapStr.count(strKey);
if (iCount == 0) {
TRACE(_T("キー[%s]が見つかりませんでした。\n"), strKey);
}
else {
strDat = m_mapStr[strKey];
TRACE(_T("キー[%s] データ[%s]\n"), strKey, strDat);
}
バイナリデータを読み込み、書き込みするサンプルです。
// プロトタイプ宣言
bool SetData( char* pszFile, void* pData, unsigned int nSize )
fclose( fp );
// プロトタイプ宣言
bool SetData( char* pszFile, void* pData, unsigned int nSize );
bool GetData( char* pszFile, void* pData, unsigned int nSize );
bool SetData( char* pszFile, void* pData, unsigned int nSize )
{
FILE* fp = NULL;
unsigned int nRet = 0;
// パラメータチェック、
// pszFileの文字列長が0でないかチェックが必要
fp = fopen( pszFile, "wb" );
if ( fp == NULL ) {
return false;
}
nRet = fwrite( pData, 1, nSize, fp );
if ( nRet < nSize ) {
return false;
}
fclose( fp );
// fp = NULL;
return true;
}
bool GetData( char* pszFile, void* pData, unsigned int nSize )
{
FILE* fp = NULL;
unsigned int nRet = 0;
// パラメータチェック、
// pszFileの文字列長が0でないかチェックが必要
fp = fopen( pszFile, "rb" );
if ( fp == NULL ) {
return false;
}
nRet = fread( pData, 1, nSize, fp );
fclose( fp );
// fp = NULL;
if ( nRet < nSize ) {
return false;
}
return true;
}
ファイルのサイズを取得する方法です。(MFC)
long GetFileSize( CString& strFile )
{
FILE* fp = NULL;
long lSize = -1;
fp = fopen( strFile, "rb" );
if ( fp == NULL ) {
return lSize;
}
fseek( fp, 0L, SEEK_END );
lSize = ftell( fp );
// fgetpos()
// fseek( fp, 0L, SEEK_SET );
fclose( fp );
// fp = NULL;
return lSize;
}