zoukankan      html  css  js  c++  java
  • C++字符串结束标识

    用一个字符数组可以存放一个字符串中的字符。如:

    char str[12]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};
    用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′′。为了测定字符串的实际长度,C++规定了一个“字符串结束标志”,以字符′′代表。在上面的数组中,第11个字符为′′,就表明字符串的有效字符为其前面的10个字符。也就是说,遇到字符′′就表示字符串到此结束,由它前面的字符组成字符串。
    对一个字符串常量,系统会自动在所有字符的后面加一个′′作为结束符。例如字符串″I am happy″共有10个字符,但在内存中它共占11个字节,最后一个字节′′是由系统自动加上的。

    在程序中往往依靠检测′′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度。

    说明:′′只是一个供辨别的标志。

    如果用以下语句输出一个字符串:
    cout<<″
    How do you do?″;
    系统在执行此语句时逐个地输出字符,那么它怎么判断应该输出到哪个字符就停止了呢?

    在C语言中,把一个字符串存入一个数组时,也把结束符 ''存入数组,并以此作为该字符串是否结束的标志。有了''标志后,就不必再用字符数组的长度来判断字符串的长度了。 ''就是字符串结束标志,在C++中,则会把字符长度存在对象的.size()中,前提是使用string类,不是字符数组,string类用字符长度判断是否结束,就不会在最后插入一个''来判断是否结束。##

    下面再对字符数组初始化补充一种方法:用字符串常量来初始化字符数组。例如:
    char str[]={″I am happy″};
    也可以省略花括号,直接写成
    char str[]=″I am happy″;
    不是用单个字符作为初值,而是用一个字符串(注意字符串的两端是用双撇号而不是单撇号括起来的)作为初值。显然,这种方法直观,方便,符合人们的习惯。注意:数组str的长度不是10,而是11(因为字符串常量的最后由系统加上一个′′)。因此,上面的初始化与下面的初始化等价:
    char str[]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’′};
    而不与下面的等价:
    char str[]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};
    前者的长度为11,后者的长度为10。如果有
    char str[10]=″China″;
    数组str的前5个元素为′C′,′h′,′i′,′n′,′a′,第6个元素为′′,后4个元素为空字符。

    int _tmain(int argc, _TCHAR* argv[])
    {
    	char buf[6] = "apple";  //buf[5]直接在编译阶段就报错,尾端必须留出一个位置给''
    	int i = -1, j = 1;
    	while (j)
    
    		if (buf[++i] != '')
    		{
    		j = 1;
    		printf("%c
    ", buf[i]);
    		}
    
    		else
    		{
    			j = 0;
    			printf("%s
    ", "end of cin");
    		}
    	return 0;
    }
    
  • 相关阅读:
    MongoDB权限管理
    Termux结合公网kali打造移动渗透神器
    整人病毒vbs大全!
    mongodb 数据库详解
    mongodb 用户及数据库管理命令
    windows入侵排查思路
    linux 下node.js 安装
    Linux下如何用/proc命令查找进程状态信息——当前目录,内存占用,描述符等
    linux c 得到指定进程内存占用
    1分钟彻底理解C语言指针
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9993159.html
Copyright © 2011-2022 走看看