样例测试
1.字符串常用方法
//Test.cpp
#include<iostream>
#include <cstring>
using namespace std;
int main()
{
char* str ="Hello,world";
char* str1 = "Hello,world";
cout<< str <<endl;
//字符串比较
int state = strcmp(str,str1); //相同返回0
cout << state << endl;
//字符串赋值
char* str2 = str; //指针指向
char str3[20] = {};
strcpy(str3,str); //复制方法
cout << str2 <<";"<<str3<< endl;
//获取字符串长度
cout << "str length="<<strlen(str) << endl;
//合并字符串
char a[20] = "hello";
char* b = " world";
strcat(a,b);
cout<<a<<endl;
return 0;
}
2.只在C文件中可正常运行的方法
#include<stdio.h>
#include<string.h>
int main(void){
char *str1="www.dotcpp.com";
char *str2="WWW.DOTCPP.COM";
int p=strnicmp(str2,str1,3); //比较字符串str2和str1的前3个字符但不区分大小写
if(p>0){
printf("str2 is greater than str1\n");
}else if(p<0){
printf("str2 is less than str1\n");
}else{
printf("str2 is equals str1\n");
}
return 0;
}
3.C语言结构体中引用方法的小案例
//printPerson.c
#include <stdio.h>
struct Person {
char *name;
int age;
char *work;
void (*printInfo)(struct Person *person); //结构体中声明方法
};
void printInfo(struct Person *per){ //具体方法实现
printf("name=%s,age=%d,work=%s\n",per->name,per->age,per->work);
}
int main(int argc,char **argv){
struct Person persons[2] = {
{"zhangshan",35,"teacher",printInfo}, //这里做函数关联,把结构体中声明的方法引用到具体的实现方法上
{"lisi",42,"doctor",printInfo}
};
persons[0].printInfo(&persons[0]);
persons[1].printInfo(&persons[1]);
return 0;
}
4.把以上C程序改为c++程序,让程序更简单
//c++拓展了结构体的功能,使结构体里的方法可以直接访问结构体内的变量
//printPerson.cpp
#include <stdio.h>
struct Person {
char *name;
int age;
char *work;
void printInfo(void){
printf("print:name=%s,age=%d,work=%s\n",name,age,work);
};
};
int main(int argc,char **argv){
struct Person persons[] = {
{"zhangshan",35,"teacher"},
{"lisi",42,"doctor"},
};
persons[0].printInfo();
persons[1].printInfo();
return 0;
}
5.把以上c++更新更进一步使用c++中的类
//printPerson.cpp
#include <stdio.h>
class Person {
public:
char *name;
int age;
char *work;
void printInfo(void){
printf("PRINT:name=%s,age=%d,work=%s\n",name,age,work);
};
};
int main(int argc,char **argv){
struct Person persons[] = {
{"zhangshan",35,"teacher"},
{"lisi",42,"doctor"},
};
persons[0].printInfo();
persons[1].printInfo();
return 0;
}
遇到的坑
1.在cpp文件中使用strnicmp做字符串比较时总是报以下错误,当把cpp文件改为.c文件时就可以正常运行了: