CString GetBuffer() GetString()
今天遇到了個棘手的問題, 弄了半天才搞定,在此記錄下。
問題描述:
MBCS工程中一個函數:
void fun(CString& str1){ ? ? char *pstr = str1.GetBuffer();}調用時:
CString str("192.168.1.1");fun(str)
然而在fun中卻只能獲取第一個字符, 其余都空白:“1 ? ? ? ? ? ? ? ? ? ? ?”
解決方法:
修改為:?
const char *pstr = str1.GetString();這樣就可以了。
分析:
1、GetBuffer 是我們常用的, 可創建所指大小的空間,供修改CString, ReleaseBuffer寫回。
GetString是vc9后才有的成員函數,獲取const char*。?
2、所以, 以后CString轉char*,用GetString了,當然你要通過char*修改的CString的話還得用GetBuffer。
至于為什么只獲取第一個字符, 估計跟字符集有關。 GetBuffer創建了一樣大小的空間,但由于字符識別問題,只復制了第一個字符過去
---------------------?
作者:rydiy?
來源:CSDN?
原文:https://blog.csdn.net/rydiy/article/details/8007368?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的CString GetBuffer() GetString()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC基础类及其层次结构
- 下一篇: VS常见调试错误