当前位置: 代码迷 >> VC >> VC读写二进制文件,可不可以想VB一样在不知道字符串长度时,读取整行后赋值给相应变量
  详细解决方案

VC读写二进制文件,可不可以想VB一样在不知道字符串长度时,读取整行后赋值给相应变量

热度:9935   发布时间:2013-02-25 00:00:00.0
VC读写二进制文件,可否想VB一样在不知道字符串长度时,读取整行后赋值给相应变量
哪个朋友做过用VC读写二进制文件,但是用以下方式对文件有严格的要求,要求读写时字符长度必需一至。但当字符串写入二进制文件时不知道长度(用CString类型字符串)时如何读取。
readTxtFile.Read( p_name, sizeof(p_name));
readTxtFile.Read( p_gender, sizeof(p_gender));

readTxtFile.Read( &p_age, sizeof(int));
readTxtFile.Read( &p_bar, sizeof(int));
readTxtFile.Read( &p_high, sizeof(int));
readTxtFile.Read( &channels, sizeof(int));

readTxtFile.Read( &r_DisplayDataIndex, sizeof(float));
VC中可否有想VB中一样读取一行,然后转化为对应类型赋值给相应类型变量?
------解决方案--------------------------------------------------------
你要在MFC环境下使用嘛?
使用MFC库的CStdioFile,
   ReadString 读取一行文本  
   WriteString 写一行文本  

函数原型:BOOL ReadString(CString& rString);
------解决方案--------------------------------------------------------
谢谢,了解一下看能不能实现功能。
------解决方案--------------------------------------------------------
使用CStdioFile操作文本文件没问题;但能否将数据存储至二进制文件,用记事本打开成乱码那样?
------解决方案--------------------------------------------------------
应该是可以的。

CStdioFile继承自CFile类,CFile类的构造如下:

CFile::CFile

CFile( );
CFile(int hFile);
CFile(LPCTSTR lpszFileName,UINT nOpenFlags);
  throw(CFileException);

参数: hFile 已打开的文件句柄。  
lpszFileName 所需文件的路径字符串,此路径可为相对的也可为绝对的路径。  
nOpenFlags 共享和访问模式,指定当打开文件时进行的动作,可以将以下所列用OR(
------解决方案--------------------------------------------------------
)操作符联起来。至少应有一个访问权限和一个共享选项,modeCreate和modeNoInherit是可选的。值如下所示: · CFile::modeCreate 调用构造函数构造一个新文件,如果文件已存在,则长度变成0。  
· CFile::modeNoTruncate 此值与modeCreate组合使用。如果所创建的文件已存在则其长度不变为0。因而此文件被打开,或者作为一个新文件或者作为一个已存在的文件。这将是很有用的,例如当打开一个可能存在也可能不存在的文件时。这个选项也可用于CStdioFile.  
· CFile::modeRead 打开文件仅供读。  
· CFile::modeReadWrite 打开文件供读写。  
· CFile::modeWrite 打开文件仅供写。  
· CFile::modeNoInherit 阻止文件被子进程继承。  
· CFile::ShareDenyNone 不禁止其它进程读或写访问,打开文件。如果文件已被其它进程以兼容模式打开,则Create失败。  
· CFile::ShareDenyRead 打开文件,禁止其它进程读此文件。如果文件已被其它进程以兼容模式打开,或被其它进程读,则Create失败。  
· CFile::ShareDenyWrite 打开文件,禁止其它进程写此文件。如果文件已被其它进程以兼容模式打开,或被其它进程写,则Create失败。  
· CFile::ShareExclusive 以独占模式打开文件,禁止其它进程对文件的读写。如果文件已经以其它模式打开读写(即使被当前进程),则构造失败。  
· CFile::ShareCompat 此标志在32位MFC中无效。此标志在使用CFile::Open时映射为CFile::ShareExclusive。  
· CFile::typeText 对回车换行设置特殊进程(仅用于派生类)。  
· CFile::typeBinary 设置二进制模式(仅用于派生类)。  
 

其中有二进制文件的功能。
CFile类是由输入输出流封装成的

------解决方案--------------------------------------------------------
我想也是可以的,就看怎么实现。

------解决方案--------------------------------------------------------
VC.net可否读取VB创建的二进制文件。