none
C++如何计算一个中间有字符串结束符的字符串长度 RRS feed

  • 问题

  • 有一个16进制数的字符串,中间有0x00,也就是字符串结束标识符"\0",怎么计算这个字符串长度呢?要算上字符串结束符。
    2013年9月7日 8:59

答案

全部回复

  • 你好:

    我用VS2012新建了一个控制台应用程序,里面定义字符串

    char hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','\0'};

    我用strlen()函数得到的字符串长度就是16.

    我不是很明白你的十六进制字符串是怎样的,你能举个例子么。


    Sunny Cao
    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2013年9月8日 7:50
    版主
  • 计算不了,必须由分配此“字符串”时给出大小。
    2013年9月9日 1:24
  • GT_MDRG,你好:

    你说的是如果你以字符数组定义是遇到的问题吧。比如定义

    char  hex[]={1,2,3,4,0,6,7,8,9,'A','B','C','D','E','F','\0'}; 这样我们用strlen()函数计算出来的个数就是4,是遇到0就结束了。我建议你把每个十六进制数转成字符,这样0就变成了‘0’,避免了这种问题。


    Sunny Cao
    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2013年9月9日 4:49
    版主
  • 一个字符串,里面是       2d 2d 2d 05 09 00 03 05 09 ************ 04 25 25 25  这个长度怎么计算?里面都是16进制的
    2013年9月16日 0:47
  • 一个字符串,里面是       2d 2d 2d 05 09 00 03 05 09 ************ 04 25 25 25  这个长度怎么计算?里面都是16进制的

    char szChar[10]={0x2d,0x2d,0x2d,0x00,0x03,0x05,0x09,0x25,0x00,0x00};
     size_t si = strlen(szChar);

     wchar_t * wszChar = (wchar_t*)szChar;
     si = wcslen(wszChar) * sizeof(wchar_t);

    自己调试下,这种方式有很多限制,比如在字符串中间不能连续出现两个字节的 0,同时必须是 2 的整数倍。

    你的思路错了,必须显示给出此字符串的长度,这个长度是无法计算的。

    2013年9月16日 1:29