天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 178|回复: 0

[每日一码] CString GetBuffer()用法

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 20:05:56 | 显示全部楼层 |阅读模式
    1. 一.函数原型
    2. CString::GetBuffer
    3. LPTSTR GetBuffer( int nMinBufLength );
    4. throw( CMemoryException );
    5. Return Value
    6. An LPTSTR pointer to the object’s (null-terminated) character buffer.
    7. Parameters
    8. nMinBufLength
    9. The minimum size of the character buffer in characters. This value does not include space for a null terminator.
    10. Remarks
    11. Returns a pointer to the internal character buffer for the CString object. The returned LPTSTR is not const and thus allows direct modification of CString contents.
    12. If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString member functions.
    13. 二.函数作用及使用范围
    14. 对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区的非常量指针的方法是调用GetBuffer()方法。
    15. GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。
    16. CString ::GetBuffer有两个重载版本:
    17. LPTSTR GetBuffer( );LPTSTR GetBuffer(int nMinBufferLength);
    18. 在第二个版本中,当设定的长度小于原字符串长度时,nMinBufLength = nOldLen,该参数会被忽
    19. 略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。而调用第一个版本时,应如通过传入0来调用第二个版本一样。
    20. 是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。如果你GetBuffer以后程序自函数就退出,局部变量都不存在了,调用不调用ReleaseBuffer没什么意义了。
    21. 最典型的应用就是读取文件:
    22. CFile file;
    23. // FILE采用NAME 为实现定义好的文件名称
    24. if(file.Open(FILE采用NAME,CFile::modeRead))
    25. {
    26.        CString szContent;
    27.        int nFileLength = file.GetLength();
    28.        file.Read(szContent.GetBuffer(nFileLength),nFileLength);
    29.        szContent.ReleaseBuffer();
    30.        // 取得文件內容放在szContent中,我们之后可以对其操作
    31. }
    复制代码

     

     

     

     

    [每日一码] CString GetBuffer()用法
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 13:28 , Processed in 0.159757 second(s), 29 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表