学习笔记之vc 6.0 下 含中文字符串 字符长度 获取及截取
来源:互联网 发布:java讲师容易吗 编辑:程序博客网 时间:2024/04/29 14:05
今天在看 vc++ 深入详解时,字符输入内容时,自己突然想输入汉字测试程序,
源程序的两句是
int s= m_input.GetLength();
m_input=m_input.Left(s-1);
m_input 是CString ,程序是mfc
结果输入汉字,测试时,会出现乱码,因为一个汉字两个字节。到网上找了一下午的解决方案,老是出问题。
最后还是参考这个,得出方法
http://bbs.csdn.net/topics/330118156
就是修改 编译器的编码设置,我当前的是ansi,属于mbcs(多字节)编码方式,修改为unicode编码方式(所有的字母,汉字都是双字节)。
设置可以参考
http://blog.csdn.net/maweiqi/article/details/7801281
设置后,我程序出错了
m_input=m_input+nChar;
这一句报错,说+号重载不明确,我看确实有很多重载,我就试了几个发现 强制转为 TCHAR 就没问题了。 m_input=m_input+(TCHAR)nChar;
查询的时候,还看了一下其他的问题解决,也有参考价值:
http://bbs.csdn.net/topics/70245081
前面查询一个解决方案说,可以直接用CStringW来定义m_input。可是我在vc6里面用不了CStringW,说未定义,不知道怎么解决,查询说貌似vc6是mfc 4.0,CStringW是mfc9.0的东西,不过不知道怎么把vc6的mfc4.0改为mfc9.0,mfc9.0下载下来是个dll,而vc6按照目录下不是mfc4.0.dll,不知道怎么弄,估计要换个高级的编译器吧。
相关代码
void CTest12View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); if (nChar==0x0d) { m_input.Empty(); m_caretpoint.y+=tm.tmHeight; SetCaretPos(m_caretpoint); } else if (nChar==0x08) { COLORREF cr=dc.SetTextColor(dc.GetBkColor()); dc.TextOut(m_caretpoint.x,m_caretpoint.y,m_input); int s= m_input.GetLength(); m_input=m_input.Left(s-1); dc.SetTextColor(cr); } else { m_input=m_input+(TCHAR)nChar; } CSize cs=dc.GetTextExtent(m_input); POINT pt; pt.x=m_caretpoint.x+cs.cx; pt.y=m_caretpoint.y; SetCaretPos(pt); dc.TextOut(m_caretpoint.x,m_caretpoint.y,m_input); CView::OnChar(nChar, nRepCnt, nFlags);}
- 学习笔记之vc 6.0 下 含中文字符串 字符长度 获取及截取
- lua 含中文的字符串处理--分离字符、计算字符数、截取指定长度
- php 截取中文字符串 , 获取字符串长度
- 含中文字符的字符串长度校验
- 字符串长度及截取(中文2字符,英文1字符)
- PHP截取含中文的混合字符串长度的函数
- js判断字符长度,含中英文数字以及含中文字符截取的问题
- 含中文字符的字符串截取(面试题)
- PHP截取字符串,获取长度,获取字符位置的函数
- 获取字符串中的中文字符长度
- js判断含中文字符的字符串长度
- flex中含中文字符串长度的获取
- Golang中获取中文字符串的子串字符位置及截取子串
- Java String类型含普通字符以及中文字符,计算等价的中文字符串长度
- PHP获取中英文混合字符串长度及截取
- 字符串长度及自动截取
- 菜鸟的jquery学习笔记,jquery输入框添加默认值,jquery提交表单,jquery获取字符串长度,并截取字符串
- 截取指定的字符长度(其中字符串中有中文,如果有半个中文则去掉)
- python 文件查找
- 64位Win7 PHP5开启CURL模块(即 Call to undefined function curl_init() 解决办法)
- CMD下无法输入中文解决办法
- 白领必读:七招教你获得职场好人缘
- 各种文件的头信息
- 学习笔记之vc 6.0 下 含中文字符串 字符长度 获取及截取
- 窗口桌面置顶(Delphi)
- 计算机网络--socket与http
- 第十六周 项目2--指来指去(1)
- 指针挑大小
- android实现环形进度条
- python 文件替换
- js调试好麻烦啊
- 【Android 适配】android平板高清适配