C++字符串

1. 字符串是存储在内存的连续字节的一系列字符。

      c风格字符串:以空字符‘\0’结尾       

int main() {

    char arr[2] = {'a','b'}; //非字符串
    char arr1[2] = {'a','\0'}; //字符串

    cout<<arr1<<endl;
    cout<<arr<<endl;

}

    程序运行结果如图所示,由于arr1以‘\0’结尾,所以cout在打印时发现空字符停止,而arr由于没有空字符所以cout会一直打印直到在内存中遇到空字符停止。 

       字符串常量可如下初始化:

        如下arr3和arr4,用此方式初始化时,该字符串隐式的包含了结尾的空字符,所以arr3长度为2. 

int main() {

    char arr[2] = {'a','b'};
    char arr1[2] = {'a','\0'};
    
    char arr3[2] = "a";
    char arr4[] = "bn";

    cout<<arr1<<endl;
    cout<<arr<<endl;

}

        注意:在采用字符串数组的方式初始化字符串时,需要保证数组足够大能够存储对应的字符串,在计算字符串所需的最短数组时,要将结尾的空字符计算在内。

       如下程序中,sizeof(arr1)输出的是整个数组的长度,strlen(arr1)输出的是可见字符,即忽略了空字符,所以在计算字符串所需最短数组时,其值应该为strlen(arr1)+ 1.

int main() {
    
    char arr1[2] = {'a','\0'};
    
    cout<<sizeof(arr1)<<endl; //2
    cout<<strlen(arr1)<<endl; // 1,
    
}

2. 字符串拼接

        任意两个由空白(空格、制表符和换行符)分隔的字符串常量都将自动拼接成一个。 所以👇程序的结果相同。

int main() {

    cout<<"I" "love"<<endl;
    cout<<"I"
          "love"<<endl;

}

3. C++string类 

字符数组和string方法对比
字符数组string
赋值

不能将一个数组赋值给另外一个数组

可以使用

strcpy(arr1,arr2) 赋值使用

char* strncpy(char* dst, const char* src, int len); //赋值超出长度时使用

可以将一个string对象赋值给两另一个对象

拼接 

strcat(arr1,arr2) //拼接

char *strncat(char *dest, const char *src, size_t n)//拼接超出长度使用
str1+="ABC"
长度strlen(arr1)str1.size()
初始化未初始化的数组内容未定义,所以strlen(arr1) 得到的结果可能不同未初始化的str对象长度自动设置为0

 4. 其他字符串字面值

        wchat_t , char16_t, char32_t, 原始(raw)字符串。 

        暂记,之后详细介绍~~

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值