字符串注意事项以及sizeof,strlen,a.length,a.size

因为  cin 和 scanf读入字符串时遇到空格就停止了。

读入一行到char 里面的话

1.0 用fgets(名字,大小,stdin);

    char a[101];
    fgets(a, 110,stdin);

2.0 getline(cin,定义的名字)读到string 里面

    string a;
    getline(cin,a);

 3.0 用cin.getline

     char a[105];
    cin.getline(a,105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!

想要从第几个开始在后面加减数字

char a[100];
scanf("%s",s+2);//表示从第二位开始接受
cout<<s+2<<endl;//表示从第二位开始输出

 注意补充一点:string 类型不能用scanf来输入,可以用printf来输出,只能用cin来输入

string s;
cin>>s;
printf("%s",s.c_str());

用scanf来输入char类型的,不能用&


char a[100];
scanf("%s",a);//正确输入

scanf("%s",&a);//错误输入

//如果是单个字符就要&
char n;
scanf("%c",&n);

关于sizeof(a)、strlen(a)、a.length()、a.size()
  1. **sizeof()**返回一个对象或者类型所占的内存字节数(获取内存空间的大小)

    适用范围:(1)字符串  (2)字符、整型等各种数组,(3)int、flooat类型占的字节数

    记住头文件是cstring,string不可以

  2. strlen只能够计算字符串的长度,其他数组不可以

    适用范围:(1)字符串%s(2)字符数组

    注意:计算长度不包括“\0”,遇到就停止

    记住头文件是cstring,string不可以

  3. **a.length()**计算字符串(string)变量的函数 ,字符数组不可以 ,计算长度也不包括“\0”

    适用范围:(1)字符串%s或者sring

    注意:计算长度不包括“\0”

  4. a.size()string类定义的一个返回字符串大小的函数。

    获取字符串长度时与length()函数作用同

    适用范围

    • 字符串%s或者sring
    • vector类型的长度
    • 数组不可以
      #include<iostream>
      #include<cstdio>
      #include<cmath>
      #include<algorithm>
      #include<cstring>
      using namespace std;
      int main(){
      	int a[]={1,2,3,4,5};
      	char b[]="hello123" ;
      	string c="hello123" ;
      	int len=sizeof(a)/sizeof(a[0]);
      	printf("计算整型数组int a[]={1,2,3,4,5}:\n");
      	printf("sizeof(a[0])计算整型数组a第一个字符所占内存大小:%d\n",sizeof(a[0]));
      	printf("sizeof(a)计算整个整型数组a所占内存大小(int 4):%d\n",sizeof(a));
      	printf("sizeof(a)/sizeof(a[0])计算整型数组a的元素个数为:%d\n",len);
      	printf("----------------------------------------------------------------------------\n");
      	printf("计算整型数组char b[]=“hello123” :\n"); 
      	printf("sizeof(b[0])计算字符数组b 第一个字符所占内存大小为:%d\n",sizeof(b[0]));
      	printf("sizeof(b)计算整个字符数组内存大小(char 1 +“0”):%d\n",sizeof(b));
      	printf("strlen(b)计算整个字符数组的长度(char 1  无“0”):%d\n",strlen(b));//cstring
      	printf("----------------------------------------------------------------------------\n");
      	printf("计算字符串string c=“hello123”  :\n"); 
      	printf("sizeof(c[0])计算字符串第一个字符所占内存大小:%d\n",sizeof(c[0]));
      	printf("sizeof(c)计算整个字符串长度所占内存大小:%d\n",sizeof(c));
          printf("c.length()计算字符串长度,不可字符数组( 无“0”):%d\n",c.length());
          printf("c.size() 计算字符串长度,不可字符数组(  无“0”):%d\n",c.size());
      	return 0;
      } 
      
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值