VC的CString类型

boolbOffline;ULONGuJnl;CStringcsIp;shortsSysCode,sTerminalNo;GetDlgItemText(IDC_IPADD... bool bOffline;
ULONG uJnl;
CString csIp;
short sSysCode, sTerminalNo;

GetDlgItemText(IDC_IPADDRESS1,csIp);
sSysCode = GetDlgItemInt(IDC_EDIT1 );
sTerminalNo = GetDlgItemInt(IDC_EDIT2);

uJnl = 1;
BOOL bRet = TA_Init(csIp.GetBuffer(0) , 8500 , sSysCode, sTerminalNo, &bOffline, &uJnl);
if(bRet) g_uJnl = uJnl;
MyMsg(MB_OK , "bRet = %d,bOffline=%d,uJnl = %u" , bRet , bOffline , uJnl);

这个csIp实际上为一个IP地址,“222.195.158.133”,他的这个方法GetBuffer是什么意思,我怎么在VB中这样写
Dim strIp As String
strIp = "222.195.158.133"
MsgBox TA_Init(VarPtr(strIp), 8500, 4, 1, bOnline, l)
怎么结果不一样,没报错,但是运行后的结果不对
展开
 我来答
ohyourdog
2010-09-15 · TA获得超过821个赞
知道小有建树答主
回答量:298
采纳率:50%
帮助的人:367万
展开全部
GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法。它和被重载的操作符LPCTSTR还是有点本质区别的,LPCTSTR是直接返回一个只读内存的指针,而GetBuffer则是返回一个可以供调用者写入的内存,并且,你可以给定大小。下面是个简单的,但也是非常典型的例子: int readFile(CString& str, const CString& strPathName) { FILE* fp = fopen(strPathName, "r"); // 打开文件 fseek(fp, 0, SEEK_END); int nLen = ftell(fp); // 获得文件长度 fseek(fp, 0, SEEK_SET); // 重置读指针 char* psz = str.GetBuffer(nLen); fread(psz, sizeof(char), nLen, fp); //读文件内容 str.ReleaseBuffer(); //千万不能缺少 fclose(fp); } 上面的函数是GetBuffer函数最典型的用法了,其实它就相当于申请一块nLen大小的内存,只不过,这块内存是被引用在CString对象的内部而已,这是非常有效的一种用法,如果不直接用GetBuffer函数来申请的话,那么你必须用new操作符(或者malloc()函数)在CString的外部申请,然后再将申请的内存拷贝到CString对象中,显然这是一个非常冗余的操作,会使你函数的效率大大下降.

VB我不太清楚。就不能帮你了。希望能解决你的问题。如果还不懂可以看看GetBuffer函数的用法。网上资料很多的 。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式