java基础改学C++(五)数组(2)字符串



//字符数组与字符串处理


#include <iostream>

//导入

#include "string"

using namespacestd;


int main(){

//   1 声明与初始化

    

    java基础改学C++(五)数组(2)字符串

    


//2  C++将字符串作为字符数组来处理。字符串常量:“CHINA”,被处理成一个无名的、字符型一维数组:

    

    java基础改学C++(五)数组(2)字符串

    

//C++语言中约定用‘\0’作为字符串的结束标志,它占内存空间,但不计入串长度。有了结束标志‘\0’后,程序往往依据它判断字符串是否结束,而不是根据定义时设定的长度!!! 因此

 

java基础改学C++(五)数组(2)字符串

    

    char c[] ="dasdeas",f[] = {"wcao!"};

    char d[][8] = {"ddaw","dsrd1wa"};//因为其每一行最后都是 \0,所以字符串最长是78-1

    char e[10] ="CHINA";//内存里:

    java基础改学C++(五)数组(2)字符串

    

//    可以自己写上  \0 ,效果一样:

    char g[] ="Test\0";

    char h[] = {'a','b','c','\0'};


    char str[10];

    //str = "12334";报错!别忘了数组名是地址!怎么能赋一个字符串呢?

    //解决:1.在定义时候就赋值

    char str2[12]="The String";

    //或者:2. cin

    cin>>str;//和java输入一样,遇到空格之后是下一个变量的内容了,所以输整行的话 改为

    cin.getline(str2,11);//让键盘收11个,为什么自己想

   

//javaString类的方法多,C艹也有。导入 string 注意 所有字符串处理函数的实参都是 字符数组名(指针)

//    3.1 拼接到第一个参数上:单词 concatenate

    char str1[20] = {"123+"};

    char str3[5] = {"321"};

    strcat(str1, str2);  //无返回值

//    注意:

    (下面演示的是static char,不用管 重点看函数的使用)

    java基础改学C++(五)数组(2)字符串

    

//    3.2  复制

    strcpy(str1, str3);

//    记住:被修改的是第一个参数

    strncpy(str1,"eqwedwrdws",5);//限制copy几位。

  

//    3.3  比较 返回值:第一个出现不同字符ASCII差值左减右 .完全相同为0

    int distance =strcmp(str1, str2);

    cout<<distance<<endl;

//    3.3.2   限制比较时最多后延几位

    distance = strncmp(str1, str2,5);//刚才的复制还有别的方法也都有相似的方法,不写了

    

//    3.4   数组长度。。。。终于等到这个方法了!!!!

    cout<<strlen(str1)<<endl;

//    注意。长度不包括 \0

    char strr[20] ="wocao\0 easf\0s";

    cout<<strlen(strr)<<endl;//输出5

    

//  3.5 转换大小写字母java toLowerCase(),toUpperCase()太多了好 java的自己猜吧不写了

    

// 4   下面,java最熟悉的 string类来了!!!!别忘了倒入 string

    

    string a32 ="dssrws";

    string a342;

    a342 = a32;


   //比较可以直接用 > < ==


//    奇妙之处:

    //1.

    a342[5] ='w';

    //2.

    a32 = strr;

    cout<<a32<<endl;

    //3.

    a32 = "123456789\00";

    cout<<a32<<endl;//也是遇 \0


//另外,若一行字符串最后一个字符是 '\' 是续行符,看例子:

    cout<<"We have to good good s\

tudy! ---------------------\n";   //可正常打印


     //然后String的方法基本也能猜就不写了

    

//最后说明:尽量用 string类的方法。因为字符数组是为了兼容C。更新换代了

    

    cout<<endl;

   

}