char ss1[] = "hello"; char ss2[6] = "hello"; //ss1[5]不可以 char ss3[] = {'h', 'e', 'l', 'l', 'o'}; char ss4[5] = {'h', 'e', 'l', 'l', 'o'}; char ss5[6] = {'h', 'e', 'l', 'l', 'o', '\0'}; //sizeof(ss)结果:6 6 5 5 6 //编译器会在ss1与ss2后自动添加null字符'\0'
// 头文件<cstring> //复制 strcpy(ss1, ss2); //拼接 strcat(ss1, ss2); //计算字符串长度 strlen(ss); //比较函数 //ss1=ss2返回0,ss1<ss2返回-1,ss1>ss2返回1 strcmp(ss1, ss2); //返回指针,指向字符ch在ss中第一次出现的位置 strchr(ss, ch); char ss[] = "just do it"; char *p = strchr(ss, 't'); cout << p << endl; //结果为:t do it //返回指针,指向ss2在ss1中第一次出现的位置 strstr(ss1, ss2);
string是可变长字符序列,定义在std中
// 初始化方法 string s1; string s2("hello"); //直接初始化 string s3 = "hello"; //拷贝初始化 string s4(3, '6'); //s4为666
// 输入时忽略开头的空白(空格符、换行符、制表符等),遇见下一处空白为止 string s1, s2; cin >> s1 >> s2; cout << s1 << s2 << endl; // 读取未知数量string:遇见EOF结束(windows下:ctrl+z,Enter) string s; while(cin >> s){ cout << s << endl; } // 读取未知数量整行,遇见EOF结束 string line; while(getline(cin, line)){ cout << line << endl; }
string s; s.empty(); //返回bool值 s.size(); //返回大小,size_type类型(unsigned类型) // ==、!=判断是否相同 // <、>等比较时按照大小写敏感的字典顺序 s1 += s2; //string对象相加 s = s + "666"; //string对象与字面值相加 // 注意:两个字面值不能相加 s1 = s + "yes" + "no"; //正确 s2 = "yes" + "no" + s; //错误 s3 = "yes" + ("no" + s); //正确