求字符串长度.doc_第1页
求字符串长度.doc_第2页
求字符串长度.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。1.使用sizeof获取字符串长度sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符0)。对于ANSI字符串和UNICODE字符串,形式如下:1. sizeof(cs)/sizeof(char) 2. sizeof(ws)/sizeof(wchar_t) 可以采用类似的方式,获取到其字符的数目。如果遇到MBCS,如中文ABC,很显然,这种办法就无法奏效了,因为sizeof()并不知道哪个char是半个字符。2.使用strlen()获取字符串长度strlen()及wcslen()是标准C+定义的函数,它们分别获取ASCII字符串及宽字符串的长度,如:1. size_t strlen( const char *string ); 2. size_t wcslen( const wchar_t *string ); strlen()与wcslen()采取0作为字符串的结束符,并返回不包括0在内的字符数目。3.使用CString:GetLength()获取字符串长度CStringT继承于CSimpleStringT类,该类具有函数:1. int GetLength( ) const throw( ); GetLength()返回字符而非字节的数目。比如:CStringW中,中文ABC的GetLength()会返回5,而非10。那么对于MBCS呢?同样,它也只能将一个字节当做一个字符,CStringA表示的中文ABC的GetLength()则会返回7。4.使用std:string:size()获取字符串长度basic_string同样具有获取大小的函数:1. size_type length( ) const; 2. size_type size( ) const; length()和size()的功能完全一样,它们仅仅返回字符而非字节的个数。如果遇到MCBS,它的表现和CStringA:GetLength()一样。5.使用_bstr_t:length()获取字符串长度_bstr_t类的length()方法也许是获取字符数目的最佳方案,严格意义来讲,_bstr_t还称不上一个完善的字符串类,它主要提供了对BSTR类型的封装,基本上没几个字符串操作的函数。不过,_bstr_t 提供了length()函数:1. unsigned int length ( ) const throw( );该函数返回字符的数目。值得称道的是,对于MBCS字符串,它会返回真正的字符数目。现在动手编写如下程序,体验获取字符串长度的各种方法。【程序 4-8】各种获取字符串长度的方法1. 01 #include stdafx.h 2. 02 #include string 3. 03 #include comutil.h 4. 04 #pragma comment( lib, comsuppw.lib ) 5. 05 6. 06using namespace std; 7. 07 8. 08int main() 9. 09 10. 10char s1 = 中文ABC; 11. 11wchar_t s2 = L中文ABC; 12. 12 13. 13/使用sizeof获取字符串长度 14. 14 printf(sizeof s1: %drn, sizeof(s1); 15. 15 printf(sizeof s2: %drn, sizeof(s2); 16. 16 17. 17/使用strlen获取字符串长度 18. 18 printf(strlen(s1): %drn, strlen(s1); 19. 19 printf(wcslen(s2): %drn, wcslen(s2); 20. 20 21. 21/使用CString:GetLength()获取字符串长度 22. 22 CStringA sa = s1; 23. 23 CStringW sw = s2; 24. 24 25. 25 printf(sa.GetLength(): %drn, sa.GetLength(); 26. 26 printf(sw.GetLength(): %drn, sw.GetLength(); 27. 27 28. 28/使用string:size()获取字符串长度 29. 29 string ss1 = s1; 30. 30 wstring ss2 = s2; 31. 31 32. 32 printf(ss1.size(): %drn, ss1.size(); 33. 33 printf(ss2.size(): %drn, ss2.size(); 34. 34 35. 35/使用_bstr_t:length()获取字符串长度 36. 36 _bstr_t bs1(s1); 37. 37 _bstr_t bs2(s2); 38. 38 39. 39 printf(bs1.length(): %drn, bs1.length(); 40. 40 printf(bs2.length(): %dr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论