C语言字符串
☆字符串的定义、赋值、输出
由于C语言中没有字符串string类型,所以使用字符数组来存放字符串。
char str1[] = "I am a student."; //可输入也可输出
char *str2 = "I am a student."; //只能输出
printf("%s\n%s\n",str1,str2);
str1 和 str2 是字符串的名字,后边的[ ]
和前边的*
是固定的写法。
这里需要留意一个坑,字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了。请看下面的例子:
char str[7];
str = "abc123"; //错误
//正确
str[0] = 'a'; str[1] = 'b'; str[2] = 'c';
str[3] = '1'; str[4] = '2'; str[5] = '3';
拼接俩字符串
strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:
strcat(arrayName1, arrayName2);
arrayName1、arrayName2 为需要拼接的字符串。
复制字符串
strcpy 是 string copy 的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,语法格式为:
strcpy(arrayName1, arrayName2);
strcpy() 会把 arrayName2 中的字符串拷贝到 arrayName1 中,字符串结束标志'\0'
也一同拷贝。
字符串比较
strcmp 是 string compare 的缩写,意思是字符串比较,语法格式为:
strcmp(arrayName1, arrayName2);
arrayName1 和 arrayName2 是需要比较的两个字符串。
字符本身没有大小之分,strcmp() 以各个字符对应的 ASCII 码值进行比较。strcmp() 从两个字符串的第 0 个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。
返回值:若 arrayName1 和 arrayName2 相同,则返回0;若 arrayName1 大于 arrayName2,则返回大于 0 的值;若 arrayName1 小于 arrayName2,则返回小于0 的值。
C++字符串类
字符串变量
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = "Hello "; //字符串类,赋值
string str2 = "World!!!"; //字符串类
string str3;
int len;
// 复制 str1 到 str3,长度可以不同
str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
输出
str3 : Hello
str1 + str2 : Hello World!!!
str3.size() : 14
字符串数组
getline(cin,str) 可以输入带空格的string
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str[3];
cout<<"please input the str"<<endl;
for(int i=0;i<3;i++){
getline(cin,str[i]);
int n=str[i].length(); // 输出字符串长度
cout<<"str[" << i << "] length:"<<n<<endl;
}
return 0;
}
输出结果
please input the str
China is strong!
str[0] length:16
USA is weak!
str[1] length:12
I am Chinese!
str[2] length:12
宏定义字符串
//宏定义一个字符串
include <iostream>
using namespace std;
#define STR "The minimum non-negative integer is "
int main(){
cout << STR << 0 << endl;
return 0;
}
输出
The minimum non-negative integer is 0