探讨一下CFile::Read函数的用法?

Read(void* lpBuffer,DWORD dwCount);
1、lpBuffer是一个指向缓冲区的指针,用CString类型的变量不行!
CString变量不是指针吗?&CString也不行!但是用CString::GetBuffer()以后就可以了,
请问这是怎么回事?
CString* pstr ;
用pstr也不行,这是为什么?

CString变量不是指针,&CString是地址,可以赋值给指针,但和Read函数的参数类型不匹配。
而CString::GetBuffer()函数的返回值类型是char*,进行转换后(void*),就与参数类型匹配,所以可以。
从这个问题可以看出的基础知识还不够牢固,对指针的概念还很模糊。
CString* pstr ;
pstr是CString*类型的指针,而函数要求是void*类型的指针,类型不匹配,所以不行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-21
CString实际上是一个可以动态管理内存的类,可通过GetBuffer(int iBuffSize)给他分配共建,并返回其地址。

CString是可以转换为const char*的。
CString实际上就可以理解为char*指针,而GetBuffer是为CString说申请内存。
通过这么一个测试就很清楚了。
CString str1 = "";
int iSize1 = sizeof(str1);//此时,iSize1=4;
CString str2 = "ABCDEFGHI";
int iSize2 = sizeof(str2); //此时,iSize2=4;

如果用CString*的话,那就是相当于指针的指针了。本回答被提问者采纳
第2个回答  2011-07-20
CString是一个类,CString::GetBuffer()是把类对象中的字符串首地址给返回了

探讨一下CFile::Read函数的用法?
CString变量不是指针,&CString是地址,可以赋值给指针,但和Read函数的参数类型不匹配。而CString::GetBuffer()函数的返回值类型是char*,进行转换后(void*),就与参数类型匹配,所以可以。从这个问题可以看出的基础知识还不够牢固,对指针的概念还很模糊。CString* pstr ;pstr是CString*类型的指针,而...

CFile::Read()怎么用,MFC中。。。
Read是从当前游标开始读取,默认是文件起始,可以使用 Seek\/ SeekToBegin \/ SeekToEnd 来定位。“怎么吧结构体的指针pstruct与Read函数关联起来”——你文件中如果存的是某种结构化数据(里面最好别包含指针变量)。可以直接使用 pstruct = (MYSTRUCT*) (lpBuf+x); 来强制转换,x表示偏移位置。如果你...

CFile::Read()函数的问题
Read只是向PString指向的地址的连续9个字节的空间内存储读到的数据,并不管你为这个指针分配了多少空间!是可以读取字符的,而且在显示字符串时是以'\\0'作为字符串结束标志的,同样也是不管这个char的指针分配了多大的空间,所以也是可以正常显示的。但是,在一个程序中还有其他很多变量的,而其他变量的地...

read函数的用法
read函数的用法如下:read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。

为什么用CFile::Read()读出中文都是乱码?
2.可能对于空格等自动截取了 3.一个是UNICODE字符串,一个是ANSI字符串,两者之间需要编码转换 ---解决方案--- C\/C++ codeCFile file(L"c:\\\\test.txt",CFile::modeRead);char *pBuf;int iLen=file.GetLength();pBuf=new char[iLen+1];file.Read(pBuf,iLen);pBuf[iLen]=0;CString str...

用了CFile::Read()后读不到数据到指定变量里
文件打开的时候有没有用CFile::typeText 这个属性呀!CrecFile.Read(cRec,CrecFile.GetLength());CString m_Record;(我假想你这个变量是这么定义的)m_Record += cRec;GetDlgItem(IDC_RECORD)->SetWindowText(m_Record);msdn 的例子 Example \/\/example for CFile::Read extern CFile cfile;char ...

C中read()的用法?
read()函数的原型是int read(int fd,void *buf,int count);。它的功能是“从文件说明符fd相关联的文件中读取count个字符,并把这些字符存储到buf所指的缓冲区中。返回值是操作成功时所读到的字节数,在文件结束时可能少于count个字节;若返回值为-1则说明出错了,返回0则表示到达文件尾端。例:从...

cfile 读一行
你需要调用函数去进行转换……另外,while(1){ file.Read(buf,2);str2=(WCHAR *)buf;if(str2==_T("\\r\\n"))break;}这样的语句并不能读取文件中的一行……这里面漏洞百出,char型数据并不能用那样进行强制转换,(str2==_T("\\r\\n") 你拿了一个地址跟一个字符串进行比较?而且用等号?

求助一个c语言编写的文件操作函数
当然如果在文件末尾添加就方便多了,用 "a" 模式一步到位。下面使用这种思路进行插入信息的示例代码:include <stdio.h> include <stdlib.h> include<string.h> const int MAX_FILE_SIZE = 100;\/\/读取文件内容 int fileRead(char fileName[],char content[],int* content_len){ FILE *infile;c...

Linux C语言中 read函数,读完指令后指针会后移吗?
会 的,read函数执行时,就像是操作堆栈差不多,如果是十六个字节,他是依次读取,每往后移动一位,最前面的一位就会被覆盖掉。

相似回答