精华内容
下载资源
问答
  • 字符串长度

    千次阅读 2011-12-25 09:32:43
    【更新】2012-7-9,增加...这个例子是求取字符串长度,结果为5。为什么不是6呢?原因是NUL('\0')不是字符串的一部分。看看字符串的定义就明白了。 【定义】字符串就是一个零串或多个字符,并且以一个位模式为全0的NU

    【更新】2012-7-9,增加示例

    【问题描述】

    看一个例子

    char str[6]={'h','e','l','l','o','\0'};
    printf("%d\n",strlen(str));

    这个例子是求取字符串长度,结果为5。为什么不是6呢?原因是NUL('\0')不是字符串的一部分。看看字符串的定义就明白了。

    【定义】字符串就是一个零串或多个字符,并且以一个位模式为全0的NUL字节结尾。NUL字节是字符串的终止符,但它本身并不是字符串的一部分。

     

    【增-示例】

    再看一个例子

    #include <stdio.h>
    #include <stdlib.h>
    #include <QtDebug>
    
    int main(void)
    {
        char str1[] = {'h','e','l','l','o'};
        char str2[] = "hello";
        char *str3 = "hello";
        qDebug()<<strlen(str1)<<strlen(str2)<<strlen(str3);
        qDebug()<<sizeof(str1)<<sizeof(str2)<<sizeof str3;
    
        return 0;
    }


    运行结果如下:

    8 5 5 
    5 6 4 


    【分析】

    (1) strlen()求解的是字符串长度,按定义strlen(str2)为5,strlen(str3)为5,很好理解;

    (2) sizeof(str1)为5,求解的是数组大小;sizeof(str2)求解的字符串长度,包括了'\0'字符,所以大小为6;sizeof str3求解的指针大小,故大小为4;

    (3) strlen(str1)如何理解呢?

    按字符串定义,str1根本就不是字符串。而strlen()函数求解的是字符串长度。看下述实验:

    char str1[] = {'h'};
    

    strlen(str1)长度为4;而

    char str1[] = {'h','e'};
    

    strlen(str1)长度为5,以此类推,

    可以推测,该结果是编译器给出的。

     

    *Qt 编译器采用的strlen()是ANSI C提供的版本,源码如下:

    #include	<string.h>
    
    size_t
    strlen(const char *org)
    {
    	register const char *s = org;
    
    	while (*s++)
    		/* EMPTY */ ;
    
    	return --s - org;
    }
    


    while循环通过判断'\o'字符结束,但str1没有'\0',这时编译器做出反映,给出了一个令人匪夷所思的值8。

     

    *注意到strlen函数的返回值是无符号数,没有负值。故类似于if(strlen(x)-strlen(y)>=0) 恒为真。切记不要用if(strlen(x)-strlen(y)>=0) 代替if(strlen(x)>=strlen(y)) 。

     

     

     

    转载请标明出处,仅供学习交流,勿用于商业目的

    Copyright @ http://blog.csdn.net/tandesir

     

     



     

    展开全文
  • C语言之 字符串长度的计算方法

    万次阅读 多人点赞 2018-08-16 20:39:04
    (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符 如:“abc!x=/”,其长度为7 2、带转义...

    特别注意

    (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!!

    1、不带转义字符的字符

    如:“abc!x=/”,其长度为 7

    2、带转义字符的字符串

    (1) 字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而
    不是5)。


    (2) 字符串“abc\n\\\'\"":其中有4个转义字符:'\n'(换行符)、'\\'(反斜杠)、'\''(单引号)、'\"'(双引号),所以该字符串的长度为7(而不是11)。


    (3) 字符串“abc\0xyz”:其中有一个转义字符'\0',它是字符串结束符,所以,当用函数strlen来测试该字符串的长度时,结果应该为3(而不是7)。


    (4) 字符串“abc\\0xy”:其中有一个转义字符'\\'(反斜杠),这样,后面的字符串“0xy”照样计算,所以,该字符串的长度为7(而不是将第二个反斜杠与其后的0结合为一个转义字符'\0',若那样的话,第一个反斜杠将无法处理,因为一个转义字符总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符)。


    (5) 若将字符串“abc\\0xy”改为“abc\\\0xy”:则其中有二个转义字符'\\'(反斜杠)和'\0'(字符串结束符),这时,当用函数strlen来测试该字符串的长度时,结果应该为4(而不是7)。


    (6) 若将字符串“abc\\\0xy”改为“abc\\\061xy”:则其中有二个转义字符'\\'(反斜杠)和'\061'(ASCII码值等于061的字符,也即数字字符'1'),'\x12'(1和2为两个16进制数,同上),这时,当用函数strlen来测试该字符串的长度时,结果应该为7(而不是4或9)。所以,当遇到转义字符'\0'时,还要看其后面是否还有数字,若有,则应将后面的数字(一至二位)与前面的'\0'相结合作为一个字符计入整个字符串的长度。若用printf(“abc\\\061xy”);输出,则输出结果为:abc\1xy

     

    注:

    C语言中没有字符串,用的是字符数组来模拟字符串

    sizeof 计算的是字符串在内存中的长度 即数组长度,返回的是变量声明后所占的内存数,而不是实际长度

    strlen 计算的是字符串的有效长度(不包括 '\0' )

    由图中关键字高亮也可看出:

    sizeof 是运算符(其运算值在编译时就计算好了);

    strlen() 是函数(其运算值要在运行时才能计算)。

     

     

    展开全文
  • 目录字符串比较字符串长度字符串拷贝字符串拼接 字符串比较 比较两个字符串指针:如果两个字符串相等,返回0 strcmp(区分大小写) //多字节 stricmp(不区分大小写) //多字节 wcscmp(区分大小写) //宽字节 wcsicmp...

    字符串比较

    比较两个字符串指针:如果两个字符串相等,返回0

    • strcmp(区分大小写) //多字节
    • stricmp(不区分大小写) //多字节
    • wcscmp(区分大小写) //宽字节
    • wcsicmp(不区分大小写) //宽字节
    • _tcscmp();(区分大小写) //多字节宽字节皆可
    • _tcsicmp();(不区分大小写) //多字节宽字节皆可
    • CString::Compare();(区分大小写)
    • CString::CompareNoCase();(不区分大小写)
    int wcscmp(
       const wchar_t *string1,
       const wchar_t *string2
    );
    
    int wcsicmp(
    	 const wchar_t * _Str1,
    	 const wchar_t * _Str2
    );
    

    字符串长度

    • strlen(); //获取多字节字符串长度,不包含 ‘/0’。
    • wcslen(); //获取宽字节字符串长度,不包含 ‘/0’。
    • _tcslen() //获取宽字节和多字节字符串长度,不包含 ‘/0’。
    • CString::GetLength();
    size_t wcslen(
       const wchar_t *str
    );
    

    字符串拷贝

    • strcpy(); //多字节字符串拷贝
    • wcscpy(); //宽字节字符串拷贝
    • _tcscpy(); //两者皆可字符串拷贝
    • CString::operator =
    wchar_t *wcscpy(
       wchar_t *strDestination,
       const wchar_t *strSource
    );
    

    字符串拼接

    • strcat(); //多字节字符串拼接
    • wcscat(); //宽字节字符串拼接
    • _tcscat(); //两者皆可字符串拼接
    • CString::operator +=
    wchar_t *wcscat(
       wchar_t *strDestination,
       const wchar_t *strSource
    );
    

    字符串转换

    USES_CONVERSION;//定义转换宏
    
    T2A:wchar_t->char
    A2T:char->wchar_t
    
    展开全文
  • C++ string类型的字符串长度获取的三种方法

    万次阅读 多人点赞 2018-01-21 20:43:44
    用string的成员方法length()获取字符串长度  length()比较直观,表示的就是该字符串的长度。 [cpp] view plain copy  print? #include  #include    using namespace std;  ...

    (1).用string的成员方法length()获取字符串长度
                   length()比较直观,表示的就是该字符串的长度。

    1. #include <string>  
    2. #include <iostream>  
    3.    
    4. using namespace std;  
    5. int main()  
    6. {  
    7.     string str = "my string";  
    8.     cout << str.length() << endl;  
    9.     return 0;  
    10. }  

    (2).用string的成员方法size()获取字符串长度

               size()表示的是string这个容器中的元素个数。如果使用过std::vector之类的容器的话,可以把string看做是一个vector<char> (这里只是举例,并不能等价), char就是这个容器的元素类型。那么size()表示的就是这个vector(容器)中char的个数。

    1. #include <string>  
    2. #include <iostream>  
    3.    
    4. using namespace std;  
    5. int main()  
    6. {  
    7.     string str = "Test string";  
    8.     cout << str.size() << endl;  
    9.     return 0;  
    10. }  

    (3).用strlen获取字符串长度

    strlen同样也可以用于C++的string。但是需要用c_str()将C++ string转换为char*类型。

    1. #include <stdio.h>  
    2. #include <string>  
    3. using namespace std;  
    4. void main()  
    5. {  
    6. string str;  
    7. str = "Test string";  
    8. len = str.length();  
    9. printf("%d",len);  
    10. }  
    展开全文
  • Lua中获取字符串长度整理

    万次阅读 2018-10-31 22:58:41
    在Lua中,获取字符串长度我们一般使用#str(不建议使用string.len(str))! local str = "abc" local len = #str print(len) -- 3 str = "你们好" len = #str print(len) -- 9 这里就出现了一个问题:为啥"abc...
  • 字符串长度的计算与字符串比较

    千次阅读 多人点赞 2016-01-11 17:56:55
    字符串长度的计算 (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符串  如:“abc!x=/”,其...
  • 批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度 ━━━━━━━━━━━━━━━━━━━━━━━━━━  替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能: ...
  • 25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字 符串。 例如,输入:beijing shanghai(为回车...
  • php 字符串长度函数

    千次阅读 2020-08-03 10:24:27
    字符串长度函数 strlen() – 返回给定的字符串 string 的长度。 返回值:成功则返回字符串 string 的长度;如果 string 为空,则返回 0。 根据面试题整理的例子: $str = 'hello'; echo strlen($str), '<br>...
  • 用c++计算字符串长度时,将字符串初始化,其中有空格,这时输出了正确长度,而永cin输入字符串时,输出的长度只是空格前的长度
  • sql获取字符串长度函数

    千次阅读 2019-12-19 11:52:38
    1、lenght返回以字节为单位的字符串的长度 lenght(string) -- 字符串 示例: SELECT classfyname,LENGHT(lassfyname) ...2、char_lenght返回字符串长度 char_lenght(string) -- 字符串 示例: SELECT cl...
  • Java判断字符串长度

    千次阅读 2019-04-25 15:35:02
    Java判断字符串长度
  • 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 首先输入一个整数,为要输入的字符串个数。 ...
  • 使用java写出一个程序:接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
  • C++获取字符串长度

    万次阅读 2019-07-21 17:00:54
    C++获取字符串长度 strlen()函数        函数 strlen()是一个常规函数,他接受一个 C-风格字符串作为参数,并返回字符串包含的字符数。 参数必须是字符型指针(char*)。当数组名作为参数传入...
  • 字符串长度

    千次阅读 2018-06-15 07:11:53
    1.使用sizeof获取字符串长度sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANSI字符串和UNICODE字符串,形式如下:sizeof(cs)/sizeof(char) sizeof(ws)/sizeof(wchar_t) 可以采用类似...
  • 字符串长度计算

    千次阅读 2015-01-11 14:26:12
    常见的获取字符串长度的方法包括如下几种。 1.使用sizeof获取字符串长度 sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANSI字符串和UNICODE字符串,形式如下: sizeof(cs)/...
  • c#获取字符串长度

    千次阅读 2017-11-23 10:46:17
    c#获取字符串长度
  • 6-6 '字符串01-字符串长度(10 分)

    千次阅读 2018-09-10 19:58:32
    // 字符串长度 int StrLen(const char *str); 说明:str为串的起始地址,函数值为字符串的长度(不含结束标记’\0’)。 裁判程序 #include &lt;stdio.h&gt; // 字符串长度 int StrLen(cons...
  • C语言获取字符串长度的几种方法

    千次阅读 2020-09-02 10:50:58
    在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍 一、使用sizeof()运算符 在C语言中,sizeof() 是长度的运算符,括号中可以放入数据类型或者表达式,一般我们用来计算字符串长度。 基本用法: int i=10;...
  • strlen求字符串长度。 strcmp比较2个字符串是否一样。 strcat字符串连接操作。 strcpy字符串拷贝操作。 strncat字符串连接操作(前n个字符)。 strncpy字符串拷贝操作(前n个字符)。 strchr查询字串。 strstr 查询子串...
  • C语言——求字符串长度

    千次阅读 2019-01-29 22:16:14
    求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的函数实现字符串长度的计算。  函数定义为:int GetStrLen(char *pStr) Input 一行字符串,使用gets(str)方法读取此行字符串。 Output ...
  • C++ 字符串长度

    千次阅读 2017-09-12 17:54:16
    刷LeetCode 657. Judge Route Circle 遇到的 求字符串长度用.size()或者.length() 不要用sizeof()
  • 汇编——字符串长度

    千次阅读 2018-03-23 00:23:47
    众所周知在字符串变量定义之后立即利用地址计数器指针符号$, $-string就得到字符串长度。string db '你的字' len_string equ $ - string但可能有小伙伴直接就拿来用了,却不知道为什么$ - string就得到字符串长度...
  • golang计算字符串长度

    千次阅读 2018-06-20 22:37:41
    golang计算字符串长度 计算字符串长度有两种情况,一种是 ascii 字符,另一种为本地编码 (如:utf8) 的字符。 package main import "fmt" import "unicode/utf8" func main() { fmt.Println...
  • Java实现 蓝桥杯 算法训练 字符串长度(IO无敌)

    千次阅读 多人点赞 2020-04-13 15:15:41
    试题 算法训练 字符串长度 问题描述  输入一个字符串,输出其长度。 输入格式  输入一个字符串 输出格式  输出字符串长度 样例输入 一个满足题目要求的输入范例。 HelloWorld 样例输出 10 数据规模和约定  输入...
  • BAT批处理脚本案例--计算字符串长度

    千次阅读 2020-02-15 19:47:16
    BAT批处理脚本案例--计算字符串长度,涉及下述知识点:call调用获取字符串长度,实现调用结果如何赋值个变量;字符串截取;goto使用;变量延时读取enabledelayedexpansion;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,085
精华内容 60,034
关键字:

字符串长度