sizeof(cha[])和strlen(cha[]),以及st

2019-08-26  本文已影响0人  狗嗨旺
#include <iostream>
using namespace std;

int main(){
    char cha[] = "wang";
    cout<<strlen(cha)<<endl;
    cout<<sizeof(cha)<<endl;
}

输出:

4
5

strlen不计算'\0' ,sizeof计算'\0'

cha存储的数据

定义char数组的方式:

  1. char cha[]="wang";
  2. char char[]={'w','a','n','g','\0'}

string和char数组不同,是一个类,不仅存储了字符,还存储了其他字符串相关的信息。

#include <iostream>
using namespace std;

void fun(char* str, int length){
    str[0] = 'd';
    cout<<"fun:"<<strlen(str)<<endl; //返回字符串的大小
    cout<<"fun:"<<sizeof(str)<<endl; //不仅包含字符串本身,还有不知道其他是啥数据。
    return;
}

int main(){
    string str = "wang";
    cout<<str.length()<<endl; //返回字符串的大小,不包括'\0'
    cout<<sizeof(str)<<endl; //返回对象str的大小,不仅包含字符串本身,还有其他数据。
    cout<<str<<endl;
    fun((char*)str.data(), str.length()); //通过(char*)str.data()可以将string转成char*,另外也可以通过str.c_str()转成const char*.
    cout<<str<<endl;
    return 0;
}

输出:

4
24
wang
fun:4
fun:8
dang
上一篇 下一篇

猜你喜欢

热点阅读