c++ char类型用法小结

来源:互联网 发布:机器人编程课程 编辑:程序博客网 时间:2024/04/30 06:51

#include<iostream>
using namespace std;
#include<string>
using std::string;
#include<cstring>
void main()
{
 char *p1;
 //用输入输出会出现内存不可读的错误
 //使用输入初始化字符指针应先为指针分配内存
 char *q1=new char[10];
 cout<<"请输入一个字符串:";
 cin>>q1;
 cout<<q1;
 //将c风格字符串赋值给字符指针不用&符号
 p1="yangfei";
 //字符串用char指针输出不用解引用
 cout<<p1<<endl;
 //若对char指针解引用,则只是输出第一个字符
 cout<<*p1<<endl;
 //string对象的指针
 string p2("yang fei");
 //指针赋值时要对对应string对象取地址,输出要对对应对象解引用
 string *pp2=&p2;
 cout<<*pp2<<endl;
 //c风格字符串末尾有'/0'作为结束标志
 char p3[]="yang fei";
 //c风格字符串用数组及其下标访问其中字符
 for(int i=0;p3[i]!='/0';i++)
 {
  cout<<p3[i]<<"/t";
 }
 cout<<endl;
 //c风格字符串用指针访问其中字符
 char *p5=p3;
 //方法1
 //结束时*p5='/0',在条件表达式中为假,也可将'/0'换为NULL
 while(*p5)
 {
  cout<<*p5<<endl;
  p5++;
 }
 //方法2
 //c++中用NULL而不用null
 for(p5=p3;*p5!='/0';p5++)
 {
  cout<<*p5<<"/t";
 }
 cout<<endl;
 //char指针同样可用字符数组名赋值
 char *p4=p3;
 cout<<p4;
 cout<<endl;
 //C字符串的标准库函数 头文件<cstring>
 //函数中的字符串参数通过字符数组名或字符指针传递,其实质都是字符串首地址
 char *p6="yangfei";
 int j=strlen(p6);//strlen返回的长度不包括'/0'
 cout<<j<<endl;
 char *p7="yang fei";
 int k=strcmp(p6,p7);//1
 cout<<k<<endl;
    int l=strcmp(p7,p6);//-1
 cout<<l<<endl;
 int m=strcmp(p6,p6);//0
 cout<<m<<endl;
 //使用strcpy(s1,s2) strcat(s1,s2) strncat(s1,s2,n) strncpy(s1,s2,n)要注意字符数组或指针的长度
 //将一个字符串catch到另一个char *指针上,其第一个字符会覆盖目标字符串的结束符'/0'
 char *p8=new char[9];
 char *p9="yang";
 char *p10="fei";
 strcpy(p8,p9);
 cout<<p8<<endl;
 strcat(p8," ");
 strcat(p8,p10);
 cout<<p8<<endl;//yang fei
 //pa输出有错误
    char *pa=new char[5];
 strncpy(pa,p8,4);
 cout<<pa<<endl;
 //char *类型可赋值给string对象,应用string的+=号
 string p11=p8;
 cout<<p11<<endl;
 p11+=" ";
 //char *指针创建时要么用c字符串初始化,要么不进行初始化但应分配内存
 char *p12="wu di";
 p11+=p12;
 cout<<p11<<endl;
 //新旧代码兼容 c字符串初始化或赋值string对象,可用作string加法操作的一个操作数,复合赋值操作的右操作数
 //但不能用string对象初始化字符指针 可用c_str()函数将string对象返回为指向字符数组首地址的指针 内容与string对象
 //相同,并以null结束 但它返回的指针指向const char类型的数组
 string p13("yang fei");
 const char* p14=p13.c_str();
 cout<<p14<<endl;


 


}