char x[]="ab中国"
int k=strlen(x)
得到的结果是6我想得到4应该怎么写?
int k=strlen(x)
得到的结果是6我想得到4应该怎么写?
解决方案 »
- 请问有谁知道notepad.exe的最后一个节里的PADDINGXXPADDING是什么意思?
- 问个关于远控的问题
- MFC 基于对话框 插入图片
- =========》 [完成端口] 一个很古怪的关于 “Socket close 和 reuse ”的问题 <============
- 图像采集卡与摄像头选择问题?
- 用vc++的工程Win32 Dynamic-link library编写动态库,为啥找不到 time_t,print 等函数呢??
- 请问unsigned int nMsgType:8;后面的“:8”什么意思?
- 今年刚毕业,想拿VC找工作,做个什么东西好??
- CustomDraw以后列宽的Autosize就不灵了?
- 请教如何在系统的进程表中,将某一进程隐藏?
- 关于改变窗口大小的问题?(跟贴有分)
- 100分求购图书!!!!!!
abc=(LPCTSTR)(LPSTR)x;
abc.Getlength();
你要计算凡是字符 〉0xa0 的就应该两个字符计为一个字长度。 自己写一个函数来计算。 例如: int pstrlen( char *str )
{
int x = 0;
int count = 0;
while( *( str + x ) != 0 )
{
if( *( str + x ) >= 0xa0 )
{
count += 2;
x += 2;
}
else
{
count++;
x++;
}
} return count;
}
abc=(TCHAR)x;
abc.Getlength();
abc=(TCHAR) x;
abc.GetLength();
int k=0;
int len=0;
while(k<strlen(x))
{
if(x[k]>=0xa1)
{
len++;
k++;
k++;
}
else
{
len++;
k++;
}
}
CString msg;
msg.Format("长度 %d",len);
MessageBox(msg);
建议你还是自己写一个函数,因为你不见得要用 MFC.
另外你可以参考 Unicode 的资料,有更详细的解决方法。
int nLen = str.GetLength();
CString str = (LPSTR)(LPCTSTR)szBuf;
*( str + x ) 取出的数是负数故不会执行
if( *( str + x ) >= 0xa0 )
{
count += 2;
x += 2;
}
真奇怪我看内存保存的是D6,D0,B9,FA(中国)
取出来的却是-42,-48,-71,-6
TCHAR szBuffer [1024] ;
_tcslen()
呵呵,那么你将 char * 改称 unsinged char *
呵呵,那么你将 char * 改称 unsinged char *
另外如果 〉0xa0 , count 应该是 += 1. 我写成 += 2 了。
用ATL中的A2W可以进行转换。#include <atlbase.h>
char x[]="ab中国";
wchar_t *wc;USES_CONVERSION; // A2W要用的
wc = A2W(x); // char转换为wchar_tprintf("len:%d\n", wcslen(wc));