MFC中如何逐个字符读取 给个例子。。现在只知道readString是逐行读取想要逐个字符读取本来想下载MSDN的可是没什么时间了望高人指点。。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,先说说你用的是哪个类的ReadString,在文件读还是在什么地方读?要一个一个字符的读当然是可以的. 读文件吗?用Read可以啊,你一次读一个不就行了。这个函数可以指定一次读取的大小的。 那read里面的参数怎么设置呢?? 给个例子:char pbuf[100];UINT nBytesRead = cfile.Read( pbuf, 100 );这是一次读100个字符,你想一次读多少就是多少,不过,上面的100个是你希望读的个数,返回值是实际读的个数。我不知道你的目的是什么,但是如果从效率上看,一个字符一个字符的读,程序执行效率是很低的。 因为我要分析每一个字符嘛····然后读取之后怎么将它写呢?用write?跟READ一样的么? 一样的,具体的用法去查MSDN吧 char* pszFileName="C:\\myfile.txt"; CStdioFile myFile; CFileException fileException; if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite),&fileException) { char* pszFileName="C:\\test.txt"; CStdioFile test; CFileException fileException; if(test.Open(pszFileName,CFile::typeText|CFile::modeReadWrite),&fileException) { test.SeekToBegin(); char pbuf[1]; UINT nBytesRead = test.Read( pbuf, 1 ); myfile.Write(pbuf,1); } } else { TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause); } }帮忙帮我看下到底哪里错了。。主要是写入的哪里因为我读取的是test.txt的内容。。然后想写入myfile.txt这个文件里面可是一直报错:C:\Program Files\Microsoft Visual Studio\MyProjects\2342342\2342342Dlg.cpp(205) : error C2065: 'myfile' : undeclared identifierC:\Program Files\Microsoft Visual Studio\MyProjects\2342342\2342342Dlg.cpp(205) : error C2228: left of '.WriteString' must have class/struct/union type本人基础比较差感谢大大们帮帮忙指点指点 具体去看MSDN,看CFile文件操作,再说MSDN上也有例子的 CStdioFile myFile;myfile.Write(pbuf,1);C语言是区分大小写的,myFile和myfile是不同的。 错是没错了。。我发现读取的不是test文件的内容啊因为输出结果就是12跟test文件的内容没关系郁闷了。 我试了你的代码,没什么问题啊,不过,你只读了一个字符,所以也只写了一个字符,另外,你用的是char,所以,处理不了中文,只能处理英文字符。 刚我弄错了。。不好意思。我现在还有最后一个问题就是假如我读取到的字符是存在ch这个变量当中的我现在要把他写入因为是用input_file.get(ch)读取字符这样貌似就不能用write()了。感觉很简单但是就是不知道怎么写入 为什么不能啊,input_file是什么啊? 因为我要对读取的字符操作啊比如123123*12312*123123123 write()不是要跟固定长度写入的吗?因为我是用*将这些字符隔开的然后分别对123123,12312,123123123,操作这些都是不固定长度的。所以感觉就不能用write。。不知道对不对? write写入文件时,后面的参数是你想写入的字符的个数,实际写入的个数并不一定是这个,比如你的缓冲区中数据只有5个,你写成write(buff,10);最终的结果还是只写入了5个,这个函数的返回值是实际写入的字符个数。 myFile.write(ch,10);代码是这样的。ch声明的是char类型为什报错 error C2664: 'Write' : cannot convert parameter 1 from 'char' to 'const void *'什么意思??? 刚打错了。。代码如果是myFile.Write(ch,10);还是报一样的错误 第1个参数要写指针,楼主写的是字符变量,不是指针,要这样.char ch[100]; 这里的100可多可少.但不可以少于你读入的数量.myFile.Write( &ch ,10); //msdn上面的CFile cfile;cfile.Open(_T("Write_File.dat"), CFile::modeCreate | CFile::modeReadWrite);char pbufWrite[100];memset(pbufWrite, 'a', sizeof(pbufWrite));cfile.Write(pbufWrite, 100); cfile.Flush();cfile.SeekToBegin();char pbufRead[100];cfile.Read(pbufRead, sizeof(pbufRead));ASSERT(0 == memcmp(pbufWrite, pbufRead, sizeof(pbufWrite))); 全部读到CString后操作字符串效率高点,用GetAt可以返回一个字符CFile file;file.Open("0.txt",CFile::modeRead);int len=file.GetLength();CString strText;file.Read(strText,len);file.Close();char c=strText.GetAt(i);file.Open("1.txt",CFile::modeWrite|CFile::modeCreate);file.Write(strText,strText.GetLenth());file.Close(); Create 函数是做什么的? CIPAddressCtrl IP控件 关于数据库调试错误的小问题 DShow.h是那种头文件?! API创建工具栏问题!! Knuth《计算机程序设计艺术》2卷 中文版 急!急 马上给分在线等待! 大家遇到这样的问题吗?是bug还是我的错误呢?都进来看看,相信都有机会遇到! 关于资源管理器的问题 头文件和源文件的区别 office文档格式解析 doc 新手求助!如何在vs2008创建停靠窗口?
char pbuf[100];
UINT nBytesRead = cfile.Read( pbuf, 100 );
这是一次读100个字符,你想一次读多少就是多少,不过,上面的100个是你希望读的个数,返回值是实际读的个数。
我不知道你的目的是什么,但是如果从效率上看,一个字符一个字符的读,程序执行效率是很低的。
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite),&fileException) {
char* pszFileName="C:\\test.txt";
CStdioFile test; CFileException fileException; if(test.Open(pszFileName,CFile::typeText|CFile::modeReadWrite),&fileException) {
test.SeekToBegin(); char pbuf[1];
UINT nBytesRead = test.Read( pbuf, 1 );
myfile.Write(pbuf,1);
} }
else { TRACE("Can't open file %s,error=%u\n",pszFileName,fileException.m_cause); }
}
帮忙帮我看下到底哪里错了。。主要是写入的哪里因为我读取的是test.txt的内容。。然后想写入myfile.txt这个文件里面可是一直报错:
C:\Program Files\Microsoft Visual Studio\MyProjects\2342342\2342342Dlg.cpp(205) : error C2065: 'myfile' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\2342342\2342342Dlg.cpp(205) : error C2228: left of '.WriteString' must have class/struct/union type本人基础比较差感谢大大们帮帮忙指点指点
myfile.Write(pbuf,1);
C语言是区分大小写的,myFile和myfile是不同的。
跟test文件的内容没关系郁闷了。
char ch[100]; 这里的100可多可少.但不可以少于你读入的数量.
myFile.Write( &ch ,10);
CFile cfile;
cfile.Open(_T("Write_File.dat"), CFile::modeCreate |
CFile::modeReadWrite);
char pbufWrite[100];
memset(pbufWrite, 'a', sizeof(pbufWrite));
cfile.Write(pbufWrite, 100);
cfile.Flush();
cfile.SeekToBegin();
char pbufRead[100];
cfile.Read(pbufRead, sizeof(pbufRead));
ASSERT(0 == memcmp(pbufWrite, pbufRead, sizeof(pbufWrite)));
CFile file;
file.Open("0.txt",CFile::modeRead);
int len=file.GetLength();
CString strText;
file.Read(strText,len);
file.Close();
char c=strText.GetAt(i);
file.Open("1.txt",CFile::modeWrite|CFile::modeCreate);
file.Write(strText,strText.GetLenth());
file.Close();