字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。
1.使用sizeof获取字符串长度
sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANSI字符串和UNICODE字符串,形式如下:
sizeof(cs)/sizeof(char)
sizeof(ws)/sizeof(wchar_t)
可以采用类似的方式,获取到其字符的数目。如果遇到MBCS,如”中文ABC”,很显然,这种办法就无法奏效了,因为sizeof()并不知道哪个char是半个字符。
2.使用strlen()获取字符串长度
strlen()及wcslen()是标准C++定义的函数,它们分别获取ASCII字符串及宽字符串的长度,如:
size_tstrlen(constchar*string);
size_twcslen(constwchar_t*string);
strlen()与wcslen()采取\0作为字符串的结束符,并返回不包括\0在内的字符数目。
3.使用CString::GetLength()获取字符串长度
CStringT继承于CSimpleStringT类,该类具有函数:
intGetLength()constthrow();
GetLength()返回字符而非字节的数目。比如:CStringW中,”中文ABC”的GetLength()会返回5,而非10。那么对于MBCS呢?同样,它也只能将一个字节当做一个字符,CStringA表示的”中文ABC”的GetLength()则会返回7。
4.使用std::string::size()获取字符串长度
basic_string同样具有获取大小的函数:
size_typelength()const;
size_typesize()const;
length()和size()的功能完全一样,它们仅仅返回字符而非字节的个数。如果遇到MCBS,它的表现和CStringA::GetLength()一样。
5.使用_bstr_t::length()获取字符串长度
_bstr_t类的length()方法也许是获取字符数目的最佳方案,严格意义来讲,_bstr_t还称不上一个完善的字符串类,它主要提供了对BSTR类型的封装,基本上没几个字符串操作的函数。不过,_bstr_t 提供了length()函数:
unsignedintlength()constthrow();
该函数返回字符的数目。值得称道的是,对于MBCS字符串,它会返回真正的字符数目。
现在动手
编写如下程序,体验获取字符串长度的各种方法。
【程序 4-8】各种获取字符串长度的方法
01#include"stdafx.h"
02#include"string"
03#include"comutil.h"
04#pragmacomment(lib,"comsuppw.lib")
05
06usingnamespacestd;
07
08intmain()
09{
10chars1[]="中文ABC";
11wchar_ts2[]=L"中文ABC";
12
13//使用sizeof获取字符串长度
14printf("sizeofs1:%d\r\n",sizeof(s1));
15printf("sizeofs2:%d\r\n",sizeof(s2));
16
17//使用strlen获取字符串长度
18printf("strlen(s1):%d\r\n",strlen(s1));
19printf("wcslen(s2):%d\r\n",wcslen(s2));
20
21//使用CString::GetLength()获取字符串长度
22CStringAsa=s1;
23CStringWsw=s2;
24
25printf("sa.GetLength():%d\r\n",sa.GetLength());
26printf("sw.GetLength():%d\r\n",sw.GetLength());
27
28//使用string::size()获取字符串长度
29stringss1=s1;
30wstringss2=s2;
31
32printf("ss1.size():%d\r\n",ss1.size());
33printf("ss2.size():%d\r\n",ss2.size());
34
35//使用_bstr_t::length()获取字符串长度
36_bstr_tbs1(s1);
37_bstr_tbs2(s2);
38
39printf("bs1.length():%d\r\n",bs1.length());
40printf("bs2.length():%d\r\n",bs2.length());
41
42return0;
43}
输出结果:
sizeof s1: 8
sizeof s2: 12
strlen(s1):7
wcslen(s2):5
sa.GetLength(): 7
sw.GetLength(): 5
ss1.size(): 7
ss2.size(): 5
bs1.length(): 5
bs2.length(): 5
分享到:
相关推荐
在C++编程语言中,`strlen`函数是一个用于计算字符串长度的常用工具,它返回一个字符串(以空字符'\0'结尾)中的字符数量。在标准库`<cstring>`中定义,`strlen`函数通常的使用方式是`strlen("example string")`,这...
Len函数是VBScript中用于计算字符串长度的内置函数,它返回字符串中的字符数量。而Right和Left函数则用于从字符串的右侧或左侧截取指定长度的子字符串。这些都是在编写TIA博途WINCC的VB脚本时处理字符串数据非常实用...
除了上述函数,C++标准库还提供了其他字符串处理函数,如`strlen`(计算字符串长度)、`strncpy`(安全版本的字符串拷贝,可以指定拷贝的字符数)、`strncat`(限制长度的字符串连接)、`strstr`(在一个字符串中...
这是一个非常直接且简洁的方法,适合大多数场景下的字符串长度计算。 **示例代码**: ```bash expr length "abc" ``` 这段代码同样会输出3,即字符串 `"abc"` 的长度。 #### 方法3: 使用`awk`获取域的个数 `awk` ...
除此之外,作者可能还封装了其他高级功能,比如检查字符串是否符合特定模式(如邮箱、电话号码格式),计算字符串长度,对字符串进行编码和解码,以及处理Unicode字符等。 在实际应用中,封装字符串操作函数的好处...
下面是pb函数库中的一些常用字符串操作函数: 1. Fill()函数:Fill()函数可以建立一个由指定字符串填充的指定长度的字符串。其语法为Fill(chars, n),其中chars是指定用于重复填充的字符串,n是指定由该函数返回的...
### 三、字符串长度函数 #### LENGTH 函数 - **功能**:返回字符串的长度(包括空格)。 - **语法**:`LENGTH(字符串表达式)` - **示例**: ```sql SELECT DISTINCT LENGTH(address) FROM customers; ``` ### ...
以下是对给定文件中提到的常用字符串处理函数的详细解析: 1. **`memset`**: 函数原型为`void* memset(void* dest, int c, size_t count);`。此函数用于将`dest`指向的前`count`个字节设置为字符`c`。`dest`必须是...
本资料主要汇总了VB中的常用字符串处理函数,适用于初学者学习和参考。 1. **Left()** 函数:返回字符串的左部指定长度的部分。例如,`Left("Hello World", 3)` 返回 "Hel"。 2. **Right()** 函数:与Left()相反,...
这里我们将深入探讨一些常用的字符串处理函数,并通过具体的示例来理解它们的使用。 首先,`strstr()`函数是C语言标准库中的一个字符串搜索函数。它用于在一个字符串(haystack)中查找另一个字符串(needle)的...
5. **计算字符串长度**: `strlen()`函数是C语言标准库中的函数,它计算字符串的长度,但不包括结束的空字符'\0'。 6. **清空串**: 清空字符串通常意味着设置其所有字符为0,但这并不改变字符串的长度。若要释放...
本文将详细介绍VB中常用的字符串函数,帮助开发者更好地理解和应用这些函数。 首先,`Len`函数用于计算字符串内的字符数目或变量所占的字节数。例如,`Len("example")`将返回7,表示"example"中有7个字符。对于非...
23. strlen:计算字符串的长度,即直到遇到空字符('\0')为止的字符数。 24. strncasecmp:不区分大小写地比较两个字符串的前n个字符。 25. strncat:连接两个字符串,但只复制最多n个字符。 26. strncmp:比较两...
本文将详细介绍几种常用的获取字符串长度的方法,包括这些方法的工作原理、适用场景以及潜在的限制。 ### 一、使用`sizeof`获取字符串长度 `sizeof`运算符是一种基本的C/C++语法,用于计算数据类型或变量的字节数...
字符串长度计算函数 `Str_Len` ```c int Str_Len(char Str2[]) { int i = 0; while (Str2[i] != 0) i++; return i + 1; } ``` 该函数用于计算字符串的长度(包括结束符 `\0`)。它通过遍历字符串直至遇到结束符...
总的来说,`strlen()`适用于简单的字符串长度计算,尤其是英文和单一字节编码的字符串。而当处理包含多字节字符的字符串,特别是中文字符串时,应优先使用`mb_strlen()`以确保得到准确的字符数。正确理解和使用这两...
bgk_strlen函数(双字节字符串长度) **函数定义**: ```c int bgk_strlen(const char *str); ``` **功能**: 求双字节字符串的实际长度。 **实现示例**: ```c int bgk_strlen(const char *str) { const char *...
本文旨在深入探讨PHP中两种常用的字符串长度计算函数:`strlen`与`mb_strlen`。我们将从基本概念入手,通过实例演示这两种函数的区别,并讨论它们在不同场景下的应用。 #### strlen函数概述 `strlen`函数是PHP中最...
它是计算字符串长度的必备工具。 5. **strstr()**: 在字符串中查找子串。如果找到子串,返回子串的指针;否则返回NULL。 6. **strchr()** 和 **strrchr()**: `strchr()` 在字符串中查找指定字符的第一个出现,而`...