读书人

VC++ 获得前3位的字符串?该如何解决

发布时间: 2012-01-13 22:43:30 作者: rapoo

VC++ 获得前3位的字符串?
char name[]= "我爱你1314 ";
怎么才能获得前3位的字呢? 也就是(我爱你)这3个字


[解决办法]
const int LEFT=3;
char * p= "ddddasdfsd源字符串ANSIf ";//源字符串ANSI
WCHAR *w=new WCHAR[(strlen(p)+1)]; //源字符串UNICODE
char * dp=new char[LEFT*2+1]; //截取后字符串ANSI,由于结果可能超过LEFT字节数,故分配2倍
WCHAR *ws=new WCHAR[LEFT+1];//截取后字符串UNICODE

//清0
memset(w,0,(strlen(p)+1)*sizeof(WCHAR));
memset(ws,0,(LEFT+1)*sizeof(WCHAR));
memset(dp,0,(LEFT+1)*sizeof(char));

//把源ANSI转换到UNICODE
MultiByteToWideChar( CP_ACP, 0, p,
strlen(p)+1, w,
strlen(p)+1 );

//截取左边若干字符(非字节)保存到ws中
wcsncpy(
ws,
w,
LEFT
);

//转换截取后的字符串到ANSI字符串
WideCharToMultiByte( CP_ACP, 0, ws, -1,
dp, LEFT*2+1, NULL, NULL );

//显示结果
TRACE( "%s\n ",dp);

//释放内存
delete[] dp;
delete[] ws;
delete[] w;


//你用的是VC6.0,不支持CStringW,这段代码支持VC6的,不用CStringW

读书人网 >VC/MFC

热点推荐