【从C语言到c++】菜鸟笨飞:持续学习更新中...

  • ​​​​​​ 1.字符串区别

C语言

C中没有字符串,而是使用字符数组保存字符串。C中的字符串是一个以null(‘\0’)字符结尾的字符数组;

//字符串的初始化,定义时可以使用‘=’;以后不能用‘=’赋值
char a[11] = "Cyuyan";

//字符串的赋值,通过"string"文件定义的字符串处理函数
strcpy(a,"python")

//获取字符串的长度,不包括'\0'在内
int len=strlen(a);
printf("%s",a);

C中可以使用字符指针访问一个字符串,通过字符指针存放字符串数组的首元素地址进行访问;

//字符指针
char *a = "hihi";
printf("%s",a)

C常用字符串函数

//字符串初始化
char s1[]="I am a student";
char s2[20]="teacher";
char s3[]="student";
int result;
char s4[20],*p;

//串长度
//int strlen(char *str)
cout<<strlen(s1)<<endl;  //输出14
cout<<strlen(s2)<<endl;  //输出7


//串拷贝
//char *strcpy(char *str1,char *str2)
strcpy(s4,s2);  //s4为"teacher"


//串连接 
//char *strcat(char *str1,char*str2)
strcat(s2,s3);  //s2为"teacherstudent"
//注意:如果使用字符数组存放字符串,strcat函数并不检查第一个数组是否能够容纳第二个字符串,这样多出来的字符串就会溢出到相邻的存储单元而出现问题。



//串比较
//int strcmp(char *str1,char *str)  //比较的是对应字符的ASCII码值,如果str1>str2,返回1
result=strcmp(s2,s3);   //result>0
result=strcmp(s2,s2);   //result=0
result=strcmp(s3,s2);   //result<0

//串定位
//char *strchr(char *str,char ch)
p=strchr(s1,'s');    //找到返回字符在字串中的位置,否则返回-1
strcpy(p,s2);       //s1为"I am a teacher"

//在一个串中查找是否存在和另一个串相等的子串

//截取子串形成一个新串

C字符串的输入

(1)方法一:使用输入操符来填充一个C字符串变量

#cin、cout要写头文件#include<iostream>

char a[80];
cin>>a;
//输入:abc defg
//输出:abc

注:以这种方式来读取C字符串时,输入会在下一个空格或者换行符处停止

(2)方法二:使用预定义函数getline获取整行输入(包括空格)

getline函数有两个参数:第一个参数用于接收输入的C字符串变量;第二个参数用于规定getline最多能接收的字符个数

char a[80];
cin.getline(a,80);

当遇到行结束的时候,输入才会停止。

C字符串的转换

  atoi函数获取一个C字符串参数,返回对应的int值。如果参数不与一个int值对应,atoi就会返回0。atoi函数在文件为cstdlib的库中。如果数字太大,不能转换成int类型的值,可以使用atol将字符串转换为long类型的值。

atoi("1234");   //返回整数1234
atoi("#123");   //返回0

C++

把字符串封装成了一种数据类型string,即可直接声明变量,进行赋值等字符串操作。

C字符串与C++string 区别
 头文件声明初始化必须声明字符串长度?实现字符串赋值使用一个null字符?
C字符串<string> 或<string.h>char str[50];
 char str[20]="nihao"; 
YES strcpy(name,"John");YES
C++<string> 或<string.h>string str;
string str = "nihao"; 
NOname = "John";NO

 

 

 

 

 

 

 

 

C++string类的输入

(1)方法一:和C字符串输入的方法一相同。
(2)方法二:使用getline函数

 


string a;
getline(cin,a);

string对象和C字符串之间的转换

//可以将C字符串存储在string类型的变量中

char a[] = "nihao";
string b;
b=a;
//但string对象不能自动的转换为C字符串,
//需要进行显式的类型转换,需要用到string类的成员函数c_str().

strcpy(a,b.c_str());
  • 2.STL之动态数组vector(矢量)

C++使用vector要添加头文件:#inlcude<vector> 和 using namespace std;

 

基本操作

(1)头文件:#include<vector>.

(2)创建vector对象:vector<int> vec;

(3)尾部插入数字:vec.push_back(a);

(4)使用下标访问元素:cout<<vec[0]<<endl;记住下标是从0开始的。

(5)使用迭代器访问元素.

vector<int>::iterator it;//可用auto代替

for(it=vec.begin();it!=vec.end();it++)
 

#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
cout<<v.size()<<endl;//输出v的大小,此处为0
vector<int> v1(5);//大小为5,默认初始化0
vector<int> v2(5,9);//大小为5,初始化9

for(int i=0;i<5;i++){
    v.push_back(i);//在 v 的末尾添加 i
}
for(auto it=v.begin();it!=v.end();it++){//使用迭代器访问vector
    cout<<*it<<" ";
}
return 0;
}
//v.end()指向容器的最后一个元素的后一个位置

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值