如何获取字符个数??

wliaoc 2011-05-06 09:57:58
在vs2008下创建嵌入式项目,用CString获取编辑框控件输入的字符串,然后用wcstombs转换成char,再用isdigit和_isascii函数逐个判断字符,统计数据。这是可行的。
在vs2008下创建MFC项目,如上操作不可用。经查是相同头文件,但引用位置不同。

1.如何指定引用头文件,如果能指定到该头文件,能解决问题吗?会不会不支持MFC?
2.有没有更简单的获取CString字符串中字符个数的方法?就是汉字算一个字符,数字也算一个,字母也算一个,统计个数。最好能给出代码。


注:其实想做的是智能判断输入字符串,根据输入字符串来动态统计字符数,如果都是数字或字母就统计数字或字母个数,如果包含汉字,就统计字的个数(汉字算一个字符,数字也算一个,字母也算一个)。
...全文
510 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪狼__ 2012-05-05
  • 打赏
  • 举报
回复
借宝地一用,获取到长度后,如何知道字符串中是否包含*号?
__lhy 2011-05-06
  • 打赏
  • 举报
回复
#define _countof(arr) (sizeof(arr)/sizeof(arr[0]))

WCHAR s[]=L"发几个的132";
int n=_countof(s);
yjueqtd 2011-05-06
  • 打赏
  • 举报
回复
用Unicode编码
qiuxin425 2011-05-06
  • 打赏
  • 举报
回复
用Unicode编码,获取就行了
Aces 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 stonewater 的回复:]

要是统计所有字符个数,直接GetLength(),就行了
如果统计有多少个字母,多少个数字,多少个汉字,那就得一个一个判断了
[/Quote]
就是此方法
unicode编码都是使用的两个字节,包含了世界上几乎所有的字符
hztj2005 2011-05-06
  • 打赏
  • 举报
回复
找不到头文件,试试下面的方法。
#include <ctype.h>

#include <ctype>

#include "ctype.h"

另外:
CString的GetLength()不能返回字符数吗?
stonewater 2011-05-06
  • 打赏
  • 举报
回复
要是统计所有字符个数,直接GetLength(),就行了
如果统计有多少个字母,多少个数字,多少个汉字,那就得一个一个判断了
Eleven 2011-05-06
  • 打赏
  • 举报
回复
采用Unicode编码
mlqxj35674 2011-05-06
  • 打赏
  • 举报
回复
搞不明白,在UNICODE编码方式中,汉字与其它字符占相同字节数,用GetLength统计字的个数
海盗医生 2011-05-06
  • 打赏
  • 举报
回复
工程设置为使用 Unicode 字符集,使用CString::GetLength()就可以正确统计了

	
CString str1 = L"abcdefgf123_";
CString str2 = L"a王cdefg大123_";
int iLen1=str1.GetLength();
int iLen2=str2.GetLength();

结果是 iLen1=12;iLen2=12;

如果非UNICODE环境,调用MultiByteToWideChar先转换为WCHAR,再通过wcslen就可以做到
wliaoc 2011-05-06
  • 打赏
  • 举报
回复
解决了,用GetLength()获取字数,用其他方式判断字符串内容。
wliaoc 2011-05-06
  • 打赏
  • 举报
回复
哦,有一点忘了说了,编辑框的字符长度有限制,具体根据输入字符定。
比如,总共允许输入90个字节数据,全部是汉字可以输入51个(一个汉字14bit),如果是数字(BCD码)可以是180个,如果有汉字又有字母,就用字节数表示,所以才要区分那种字符。
wliaoc 2011-05-06
  • 打赏
  • 举报
回复
哦,有一点忘了说了,编辑框的字符长度有限制,具体根据输入字符定。
比如,总共允许输入90个字节数据,全部是汉字可以输入51个(一个汉字14bit),如果是数字(BCD码)可以是180个,如果有汉字又有字母,就用字节数表示,所以才要区分那种字符。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧