C++ 往文本文件中写中文 参考示例

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();
				//
			}
			//
		}
	}
}



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值