hur.cn - 华软网

 热门搜索

请问我要读取文本文件等号后面的值,修改和保存。用什么方法?

  作者:未知    来源:网络    更新时间:2011/6/23
这个是个文本文件,请大家给点思路,或者贴个简单的源码

RLUX500 = 500
RLUX400 = 400
RLUX300 = 300
RLUX200 = 200
RLUX100 = 100
RLUX75 = 75
RLUX50 = 50
RLUX25 = 25
RLUX20 = 20 
RLUX15 = 15
RLUX10 = 10
RLUX5 = 5
RLUX2 = 2
RLUX1 = 1
RLUX0.5 = 0.5
RLUX0.1 = 0.1
GLUX500 = 500
GLUX400 = 400
GLUX300 = 300
GLUX200 = 200
GLUX100 = 100
GLUX75 = 75
GLUX50 = 50
GLUX25 = 25
GLUX20 = 20 
GLUX15 = 15
GLUX10 = 10
GLUX5 = 5
GLUX2 = 2
GLUX1 = 1
GLUX0.5 = 0.5
GLUX0.1 = 0.1
BLUX500 = 500
BLUX400 = 400
BLUX300 = 300
BLUX200 = 200
BLUX100 = 100
BLUX75 = 75
BLUX50 = 50
BLUX25 = 25
BLUX20 = 20 
BLUX15 = 15
BLUX10 = 10
BLUX5 = 5
BLUX2 = 2
BLUX1 = 1
BLUX0.5 = 0.5
BLUX0.1 = 0.1
WLUX500 = 500
WLUX400 = 400
WLUX300 = 300
WLUX200 = 200
WLUX100 = 100
WLUX75 = 75
WLUX50 = 50
WLUX25 = 25
WLUX20 = 20 
WLUX15 = 15
WLUX10 = 10
WLUX5 = 5
WLUX2 = 2
WLUX1 = 1
WLUX0.5 = 0.5
WLUX0.1 = 0.1
---华软 网友回答---
没整过这个,心有余而力不足,帮顶一下。。
---华软网友回复---
用CStdioFile一行一行地读,读出来分析一下字符串,得到=后面的字符串。
---华软网友回复---
用CStidoFile.ReadString一行一行的读
假如
CString str是你读取出来的内容,那么
//寻找=
int nPos = str.Find('=');
CString str1 = str.Left(nPos);
CString str2 = str.Mid(nPos+1);

打完收功……
---华软网友回复---
改名成.ini文件,就很容易读取了。
---华软网友回复---
引用 3 楼 shenyi0106 的回复:
用CStidoFile.ReadString一行一行的读
假如
CString str是你读取出来的内容,那么
//寻找=
int nPos = str.Find('=');
CString str1 = str.Left(nPos);
CString str2 = str.Mid(nPos+1);

打完收功……



还不是很明白这个是VC里的还是VS里的
---华软网友回复---
引用 5 楼 zhuayi112 的回复:
引用 3 楼 shenyi0106 的回复:
用CStidoFile.ReadString一行一行的读
假如
CString str是你读取出来的内容,那么
//寻找=
int nPos = str.Find('=');
CString str1 = str.Left(nPos);
CString str2 = str.Mid(nPos+1);

打完收功……



还……

CStidoFile类 MFC里的一个类
---华软网友回复---
能写个参考下吗?这个类没用过
---华软网友回复---
百度大叔了下,都只是简单的说了下,没相关的例子
---华软网友回复---
// CStdioFile::CStdioFile示例:
char* pFileName = "test.dat";
CStdioFile f1;
if( !f1.Open( pFileName, CFile::modeCreate | CFile::modeWrite | CFile::typeText ) )
{
  #ifdef _DEBUG
     afxDump << "Unable to open file" << "\n";
  #endif
  exit(1);
}

CStdioFile f2( stdout );
TRY
{
  CStdioFile f3( pFileName, CFile::modeCreate | CFile::modeWrite | CFile::typeText );
}
CATCH( CFileException, e )
{
  #ifdef _DEBUG
     afxDump << "File could not be opened!" << e->m_cause << "\n";
  #endif
}
END_CATCH 
---华软网友回复---
CStdioFile::ReadString

virtual LPTSTR ReadString( LPTSTR lpsz, UINT nMax );
  throw( CFileException );
BOOL ReadString(CString& rString);
  throw( CFileException );

返回值:
返回一个指向包含文本数据的缓存的指针。如果在到达文件结尾后没有读到任何数据,则返回NULL;或者是返回布尔值FALSE。

参数: lpsz 指定一个指向用户提供的缓冲区的指针;该缓冲区将接收一个以空字符结尾的文本字符串。  
nMax 指定要读取的最大字符数,不计算结尾的空字符。  
rString 是一个对CString对象的引用,当函数返回时,该对象将包含了所读取的字符串。  

---华软网友回复---
有点晕了,
---华软网友回复---
引用 3 楼 shenyi0106 的回复:
用CStidoFile.ReadString一行一行的读
假如
CString str是你读取出来的内容,那么
//寻找=
int nPos = str.Find('=');
CString str1 = str.Left(nPos);
CString str2 = str.Mid(nPos+1);

打完收功……


如何一行一行的读取 ,文本内容我已经读取出来了
---华软网友回复---
CStidoFile读出来是CString的,你用CString的Find找到等号了,把前后用Left、Mid截取下来就行了。
如果要整数,用_tcstol转换就是了,要浮点用_tcstod
---华软网友回复---
引用 13 楼 kyotrue 的回复:
CStidoFile读出来是CString的,你用CString的Find找到等号了,把前后用Left、Mid截取下来就行了。
如果要整数,用_tcstol转换就是了,要浮点用_tcstod


这几句能写个吗?

C++">void CSdfDlg::OnButton1() 
{// TODO: Add your control notification handler code here
char* pFileName = "\LightSrcCalib.txt";
int nPos;
CStdioFile file;


if( !file.Open( pFileName, CFile::modeReadWrite ) )
{
::MessageBox(NULL,"文件不存在!","错误",0);
exit(1);
}
CString strValue;
while(file.ReadString(strValue))
{
nPos = strValue.Find('=');
}
UpdateData(false);
file.Close();
}

---华软网友回复---
GetPrivateProfileInt

---华软网友回复---
用操作ini文件的api      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。