c语言和c++字符串操作对比

C语言字符串操作

#include 
#include 
int main() {
	//字符数组
	char str1[20] = "abcde";		//初始化
	char str2[20] = { 'a','b','c' };//初始化
	//str2 = "abc";	错误
	char str3[20];
	str3[0] = 'a'; str3[1] = 'b'; str3[2] = '\0';
	//字符指针
	char *pstr = "bcd"; //将常量字符串的地址赋给pstr
	pstr = "def";
	pstr = str1;
	pstr[0] = 'x';		//通过指针修改
	*(pstr + 1) = 'y';	//通过指针修改
	printf("str1=%s\n", str1); // 输出xycde
	//字符串长度
	printf("str1长度= %d\n", strlen(str1));  //5
	//字符串拷贝
	printf("str1=%s\n", strcpy(str1, "ddd"));//ddd
	//字符串连接
	printf("str1=%s\n", strcat(str1, str2)); //dddabc
	//字符串比较
	if (strcmp(str2, str3) > 0)
		printf("%s > %s\n", str2, str3);
	else if(strcmp(str2, str3) == 0)
		printf("%s == %s\n", str2, str3);
	else
		printf("%s < %s\n", str2, str3);
	//字符串查找
	strcpy(str2, "--ab=="); //str3: "ab"
	printf("%s\n", strstr(str2, str3)); //ab==
	return 0;
}

c++字符串操作

#include 
#include 
using namespace std;
int main() {
	//std::string
	std::string str1("abc"); //初始化
	string str2 = "bcd";	 //初始化
	str2 = "defg";			 //可以直接赋值
	str2 = str1;			 //可以直接赋值
	
	const char *pstr = str2.c_str(); //转c风格字符串
	str2[0] = 'X';		//可以直接下标访问操作
	str2.at(1) = 'Y';	//可以 at 访问操作
	cout <<"str2=" << str2 << endl; //XYc
	
	//求字符串长度
	cout << str2.size() << endl;
	cout << str2.length() << endl;
	//strlen(str1); 错误
	cout << strlen(str2.c_str()) << endl; //正确
	//字符串连接
	str2 = str2 + str1 + "!!";
	cout << "str2=" << str2 << endl; //XYcabc!!
	//字符串比较 (str1: abc)
	cout << str2.compare(str1) << endl; //-1
	cout << (str2 < str1) << endl;	    //1
	//字符串查找
	cout << str2.find(str1) << endl;	//3
	//字符串提取
	string str3 = str2.substr(3, 3);
	cout << str3 << endl;				//abc

	return 0;
}

你可能感兴趣的:(c语言,c++)