ca31a_demo_31_C++_C风格字符串c_strcpy_strcmp_strcat

/*
ca31a_demo_31_C++_C_txwtech风格字符串c_strcpy_strcmp_strcat
C风格字符串的使用
const char *cp="some value"; 字符常量数组
C风格字符串的标准函数
永远不要忘记字符串结束符null--\0
使用strn函数处理C风格字符串
尽可能使用标准库类型string

cout << "C: " << strlen(cp11) << endl;//strlen C语言的函数
cout << "C++: " << s11.size() << endl;

//strcmp c风格字符串比较
    const char *cp11 = "A string exmaple";// 
    const char *cp22 = "A different string";// 
    int i = strcmp(cp1,cp2);
    strcpy//拷贝
    strcat//连接

*/

/*
ca31a_demo_31_C++_C_txwtech风格字符串c_strcpy_strcmp_strcat
C风格字符串的使用
const char *cp="some value"; 字符常量数组
C风格字符串的标准函数
永远不要忘记字符串结束符null--\0
使用strn函数处理C风格字符串
尽可能使用标准库类型string

cout << "C: " << strlen(cp11) << endl;//strlen C语言的函数
cout << "C++: " << s11.size() << endl;

//strcmp c风格字符串比较
    const char *cp11 = "A string exmaple";// 
	const char *cp22 = "A different string";// 
	int i = strcmp(cp1,cp2);
	strcpy//拷贝
	strcat//连接

*/
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <string.h> //c语言写法
//#include <cstring>//c++中使用c语言的函数

using namespace std;

int main()
{
	string s("hello");//c++风格
	char s2[] = "hello";//c风格字符串,字符数组
	const char *cp = "hello";//操作c风格字符串,不可修改

	while (*cp)//解引用
	{
		cout << *cp << endl;
		++cp;//默认指向第一个字符
	}
	char ca1[] = {'c','+','+'};//不是c风格字符串,没有\0
	char ca2[] = { 'c','+','+','\0' };//是c风格字符串
	char ca3[] = "c++";//是c风格字符串,自动会添加\0

	char *cp1 = ca1;//字符数组,不是c风格字符串
	char *cp2 = ca2;//指向c风格字符串
	printf("hello c语言!\n");//c风格
	cout << "hello c++!" << endl;//c++风格

	//C风格字符串的标准函数
	const char *cp11 = "A string exmaple";//16+1
	const char *cp22 = "A different string";//18+1

	string s11("A string exmaple");
	string s22("A different string");

	cout << strlen(cp11) << endl; //strlen计算时,不考虑\0

	cout << "C: " << strlen(cp11) << endl;//strlen C语言的函数
	cout << "C++: " << s11.size() << endl;

	char ca[] = {'C','+','+'};//没有/0,统计就是错误的,strlen需要找到\0才结束
	cout << "c: " << strlen(ca) << endl;//没有/0,统计就是错误的

	s11 = "Bill";
	s22 = "Mary";
	cp11 = "Bill";//c风格
	cp22 = "Mary";//c风格

	//s11 = s22;//
	//cp11 = cp22;;//错误
		//应该:
	    char largeStr[10] = {0};
		char largeStr2[10]= {0};
		strcpy(largeStr,cp11);
		strcat(largeStr, " ");
		strcat(largeStr,cp22);
		cout << "largeStr: "<<largeStr << endl;

		strncpy(largeStr2,cp11,4); //4表示拷贝cp1里面实际的位数
		strncat(largeStr2, " ", 1);//添加一个空格
		strncat(largeStr2,cp22,4);//4表示连接cp2里面实际的位数

		cout << "largeStr2: " << largeStr2 << endl;
	//strcmp c风格字符串比较
	int i = strcmp(cp1,cp2);
	if (i > 0)
	{
		cout << "cp1大" << endl;
	}
	else if (i < 0)
	{
		cout << "cp2大" << endl;
	}
	else if (i == 0)
	{
		cout << "cp1==cp2" << endl;
	}
	if (s11 < s22)
	{
		cout << "s2大" << endl;
	}
	else if (s11 > s22)
	{
		cout << "s1大" << endl;
	}
	else if (s11 == s22)
	{
		cout << "s1和s2相等" << endl;
	}

	getchar();
	return 0;
}
发布了360 篇原创文章 · 获赞 186 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/txwtech/article/details/104093919
今日推荐