C++ 往文本文件中写中文 参考示例:
参考示例1:
//==========================测试存中文=============================================================================
{
pDlg->m_ctrlGTS800Card.m_sAppFilePath.Empty();
pDlg->m_ctrlGTS800Card.m_sAppFilePath = theApp.m_sFilePath;
CString file_name;
file_name = _T("\\logfiles\\TestStoreChinese\\");
CString file_ext = _T(".txt");
file_name = pDlg->m_ctrlGTS800Card.m_sAppFilePath + file_name;
//
CTime ct = CTime::GetCurrentTime();
CString sCurrentTime_YMD;
sCurrentTime_YMD.Empty();
sCurrentTime_YMD = ct.Format(_T("%Y-%m-%d"));
file_name = file_name + sCurrentTime_YMD;
//CreateFolder(file_name);
CreateDirectory(file_name, NULL);
file_name = file_name + _T("\\");
CString sCurrentTime_HMS;
sCurrentTime_HMS.Empty();
sCurrentTime_HMS = ct.Format(_T("%H.%M.%S"));
file_name = file_name + sCurrentTime_HMS;
file_name = file_name + file_ext;
//
CFile cf;
if (!cf.Open(file_name, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
{
return;
}
//
CString m_sRecordInfo;
m_sRecordInfo.Empty();
m_sRecordInfo = _T("焊接功率, 焊接时间, 焊接速度, 1轴焦点位置, 2轴焦点位置,3轴焦点位置");
m_sRecordInfo = m_sRecordInfo + _T("\r\n");
cf.SeekToEnd();
{
int n = _tcslen(m_sRecordInfo); //按字符计算,str的长度
int len = WideCharToMultiByte(CP_ACP, 0, m_sRecordInfo, n, NULL, 0, NULL, NULL);//按Byte计算str长度
char *pChStr1 = new char[len + 1];//按字节为单位
memset(pChStr1, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, m_sRecordInfo, n, pChStr1, len, NULL, NULL);//宽字节转换为多字节编码
pChStr1[len] = '\0';
cf.Write(pChStr1, len);
delete pChStr1;
pChStr1 = NULL;
}
// m_sDataInfoTwo 写入的信息
m_sDataInfoTwo = m_sDataInfoTwo + _T("\r\n");
cf.SeekToEnd();
{
int n = _tcslen(m_sDataInfoTwo); //按字符计算,str的长度
int len = WideCharToMultiByte(CP_ACP, 0, m_sDataInfoTwo, n, NULL, 0, NULL, NULL);//按Byte计算str长度
char *pChStr1 = new char[len + 1];//按字节为单位
memset(pChStr1, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, m_sDataInfoTwo, n, pChStr1, len, NULL, NULL);//宽字节转换为多字节编码
pChStr1[len] = '\0';
cf.Write(pChStr1, len);
delete pChStr1;
pChStr1 = NULL;
}
//
cf.Close();
//
}
//====================================================================================================================
//
CString m_sFilePath;
void CWelderGuoApp::GetCurrentAppPath(void)
{
m_sFilePath.Empty();
GetModuleFileName(NULL,m_sFilePath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
m_sFilePath.ReleaseBuffer();
int m_iPosIndex;
m_iPosIndex = m_sFilePath.ReverseFind('\\');
m_sFilePath = m_sFilePath.Left(m_iPosIndex);
}
//
//========================只能存英文、不能存中文========================================================================
{
CString sDataInfo;
sDataInfo.Empty();
sDataInfo = m_sCurrentRealWeldPowerW; //实时焊接功率
sDataInfo = sDataInfo + _T(", ");
sDataInfo = sDataInfo + m_sCurrentRealWeldCostTimeS; //焊接耗费时间 s
sDataInfo = sDataInfo + _T(", ");
sDataInfo = sDataInfo + m_sCurrentRealWeldSpeed; //焊接速度
sDataInfo = sDataInfo + _T(", ");
//m_ctrlShowZPos //pDlg->m_sActiveCurrPos[2] // RealTimeShowPosInfo
sDataInfo = sDataInfo + pDlg->m_sFocusPointX; // 1轴焦点位置
sDataInfo = sDataInfo + _T(", ");
sDataInfo = sDataInfo + pDlg->m_sFocusPointY; // 2轴焦点位置
sDataInfo = sDataInfo + _T(", ");
sDataInfo = sDataInfo + pDlg->m_sFocusPointZ; // 3轴焦点位置
//
m_sDataInfoTwo.Empty(); //
m_sDataInfoTwo = sDataInfo;
//
pDlg->m_ctrlGTS800Card.m_sAppFilePath.Empty();
pDlg->m_ctrlGTS800Card.m_sAppFilePath = theApp.m_sFilePath;
pDlg->m_ctrlGTS800Card.m_bCreateFileSuccess = false;
CString file_name;
file_name = _T("\\logfiles\\MYLOG\\");
CString file_ext = _T(".txt");
pDlg->m_ctrlGTS800Card.AutoGetCurrentTime();
file_name = pDlg->m_ctrlGTS800Card.m_sAppFilePath + file_name;
file_name += pDlg->m_ctrlGTS800Card.m_sCurrTime; //
file_name += file_ext;
pDlg->m_ctrlGTS800Card.m_sLogCmdFileName = file_name;
pDlg->m_ctrlGTS800Card.CreateNewLogCmdFile(file_name);
pDlg->m_ctrlGTS800Card.CreateLogCmdFile(file_name, L"MYLOG Start------");
//焊接功率, 焊接时间, 焊接速度, 1轴焦点, 2轴焦点, 3轴焦点
//pDlg->m_ctrlGTS800Card.CreateLogCmdFile(file_name, _T("焊接功率,焊接时间,焊接速度,1轴焦点位置,2轴焦点位置,3轴焦点位置"));
//
pDlg->m_ctrlGTS800Card.AutoGetCurrentTime();
pDlg->m_ctrlGTS800Card.m_sCurrTime += L": ";
pDlg->m_ctrlGTS800Card.m_sCurrTime = pDlg->m_ctrlGTS800Card.m_sCurrTime + sDataInfo; //
pDlg->m_ctrlGTS800Card.CreateLogCmdFile(pDlg->m_ctrlGTS800Card.m_sLogCmdFileName, pDlg->m_ctrlGTS800Card.m_sCurrTime);
}
//==============================================================================================================================
/
void CHerGTS800::AutoGetCurrentTime(void)
{
COleDateTime time = COleDateTime::GetCurrentTime();
int year = time.GetYear();
int month = time.GetMonth();
int day = time.GetDay();
int hour = time.GetHour();
int minute = time.GetMinute();
int second = time.GetSecond();
CString sYear;
sYear.Format(L"%d", year);
CString sMonth;
if(month < 10)
{
sMonth.Format(L"0%d", month);
}
else
{
sMonth.Format(L"%d", month);
}
CString sDay;
if(day < 10)
{
sDay.Format(L"0%d", day);
}
else
{
sDay.Format(L"%d", day);
}
CString sHour;
if(hour < 10)
{
sHour.Format(L"0%d", hour);
}
else
sHour.Format(L"%d", hour);
CString sMinute;
if(minute < 10)
{
sMinute.Format(L"0%d", minute);
}
else
sMinute.Format(L"%d", minute);
CString sSecond;
if(second < 10)
{
sSecond.Format(L"0%d", second);
}
else
sSecond.Format(L"%d", second);
m_sCurrTime += sYear;
m_sCurrTime = m_sCurrTime + _T(".");
m_sCurrTime += sMonth;
m_sCurrTime = m_sCurrTime + _T(".");
m_sCurrTime += sDay;
m_sCurrTime = m_sCurrTime + _T("-");
m_sCurrTime += sHour;
m_sCurrTime = m_sCurrTime + _T(".");
m_sCurrTime += sMinute;
m_sCurrTime = m_sCurrTime + _T(".");
m_sCurrTime += sSecond;
}
void CHerGTS800::CreateNewLogCmdFile(CString sFilePath)
{
CStdioFile TempFile;
if(!TempFile.Open(sFilePath, CFile::modeCreate | CFile::modeWrite))
{
m_bCreateFileSuccess = false;
return;
}
m_bCreateFileSuccess = true;
TempFile.Close();
}
void CHerGTS800::CreateLogCmdFile(CString sFilePath, CString sRecordContent)
{
if(m_bCreateFileSuccess)
{
CStdioFile TempFile;
if(!TempFile.Open(sFilePath, CFile::modeWrite))
{
m_bCreateFileSuccess = false;
return;
}
m_bCreateFileSuccess = true;
TempFile.SeekToEnd();
sRecordContent += _T("\r\n");
//sRecordContent += _T("\r\n");
TempFile.WriteString(sRecordContent);
TempFile.Close();
m_sCurrTime.Empty();
}
}
///
参考示例2:
void CWelderGuoDlg::GenerateMesRecordFile(void)
{
{//MES记录生成
if(this->m_DlgCoordinate2PathShow.m_bEnableMesRecordInfoGenerateToFile)
{
//先生成当前MES记录文件的目录
CString sMesRecordFilePath = m_MesRecordStorePathPara.m_sMesRecordStoreDirectory;
CreateFolder(sMesRecordFilePath);
sMesRecordFilePath = sMesRecordFilePath + _T("\\");
for(int i = 0; i < pDlg->m_MesFieldNameSz.size(); i++)
{
if(i >= 0 && i < 20)
{
this->m_DlgCoordinate2PathShow.m_sActiveMesFieldInfo[i].Empty();
}
CString sProductMesFiledName;
sProductMesFiledName.Empty();
this->m_DlgCoordinate2PathShow.m_pMesFieldComboxBox[i]->GetWindowText(sProductMesFiledName);
this->m_DlgCoordinate2PathShow.m_sActiveMesFieldInfo[i] = sProductMesFiledName;
sMesRecordFilePath = sMesRecordFilePath + sProductMesFiledName;
CreateFolder(sMesRecordFilePath);
sMesRecordFilePath= sMesRecordFilePath + _T("\\");
}
//
CTime ct = CTime::GetCurrentTime();
CString sCurrentTime_YMD;
sCurrentTime_YMD.Empty();
sCurrentTime_YMD = ct.Format(_T("%Y%m%d"));
sMesRecordFilePath = sMesRecordFilePath + sCurrentTime_YMD;
//CreateFolder(sMesRecordFilePath);
CreateDirectory(file_name, NULL);
sMesRecordFilePath = sMesRecordFilePath + _T("\\");
CString sCurrentTime_HMS;
sCurrentTime_HMS.Empty();
sCurrentTime_HMS = ct.Format(_T("%H%M%S"));
sMesRecordFilePath = sMesRecordFilePath + sCurrentTime_HMS;
sMesRecordFilePath = sMesRecordFilePath + _T(".txt");
//开始存储记录信息
{
CFile cf;
if(!cf.Open(sMesRecordFilePath, CFile::modeCreate|CFile::modeNoTruncate | CFile::modeWrite))
{
return;
}
//产品任务号
for(int i = 0; i < pDlg->m_MesFieldNameSz.size(); i++)
{
CString sProductRecordInfo;
sProductRecordInfo.Empty();
if(i >= 0 && i < 20)
{
sProductRecordInfo = pDlg->m_MesFieldNameSz.at(i).m_sMesRelationFieldName + _T(":") + this->m_DlgCoordinate2PathShow.m_sActiveMesFieldInfo[i];
}
sProductRecordInfo = sProductRecordInfo + _T("\r\n");
cf.SeekToEnd();
{
int n = _tcslen(sProductRecordInfo); //按字符计算,str的长度
int len = WideCharToMultiByte(CP_ACP, 0, sProductRecordInfo, n, NULL, 0, NULL, NULL);//按Byte计算str长度
char *pChStr1 = new char[len + 1];//按字节为单位
memset(pChStr1, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, sProductRecordInfo, n, pChStr1, len, NULL, NULL);//宽字节转换为多字节编码
pChStr1[len] = '\0';
cf.Write(pChStr1, len);
delete pChStr1;
pChStr1 = NULL;
}
}
//激光功率
CString sLaserPowerRecordInfo;
sLaserPowerRecordInfo.Empty();
m_sCurrentRealWeldPowerW.Empty();
m_sCurrentRealWeldPowerW.Format(_T("%.0f"), pDlg->m_dbLaserPowerMaxValue);
sLaserPowerRecordInfo = _T("激光反馈功率:") + m_sCurrentRealWeldPowerW;
sLaserPowerRecordInfo = sLaserPowerRecordInfo + _T("\r\n");
cf.SeekToEnd();
{
int n = _tcslen(sLaserPowerRecordInfo); //按字符计算,str的长度
int len = WideCharToMultiByte(CP_ACP, 0, sLaserPowerRecordInfo, n, NULL, 0, NULL, NULL);//按Byte计算str长度
char *pChStr1 = new char[len + 1];//按字节为单位
memset(pChStr1, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, sLaserPowerRecordInfo, n, pChStr1, len, NULL, NULL);//宽字节转换为多字节编码
pChStr1[len] = '\0';
cf.Write(pChStr1, len);
delete pChStr1;
pChStr1 = NULL;
}
//加工速度
CString sMadeSpeedRecordInfo;
sMadeSpeedRecordInfo.Empty();
sMadeSpeedRecordInfo = _T("加工速度:") + m_sCurrentRealWeldSpeed;
sMadeSpeedRecordInfo = sMadeSpeedRecordInfo + _T("\r\n");
cf.SeekToEnd();
{
int n = _tcslen(sMadeSpeedRecordInfo); //按字符计算,str的长度
int len = WideCharToMultiByte(CP_ACP, 0, sMadeSpeedRecordInfo, n, NULL, 0, NULL, NULL);//按Byte计算str长度
char *pChStr1 = new char[len + 1];//按字节为单位
memset(pChStr1, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, sMadeSpeedRecordInfo, n, pChStr1, len, NULL, NULL);//宽字节转换为多字节编码
pChStr1[len] = '\0';
cf.Write(pChStr1, len);
delete pChStr1;
pChStr1 = NULL;
}
//
cf.Close();
//
}
//
}
}
}