C\C++汇总
字符/字符串
接受一个字符
char c=cin.get();
输入包含空格tab等的字符串
string s;
cin>>s; 输入的字符串不能包含空格
以下的来源
法1:
string s;
getline(cin,s);
法2:
string s;
char c;
while((c=cin.get())!='\n'){
s=s+c;
}
以下的来源
法3:
scanf默认回车和空格是输入不同组之间的间隔和结束符号
格式符%[]
的作用为扫描字符集合
scanf("%[^c]",s):c是一个具体的字符,为当前输入的结束符
char *s=NULL; //动态数组
s=(char *)mallloc(100*sizeof(char));
scanf("%[^\n]",s); //以'\n'为字符串输入的结束符
printf("%s",s); //cin>>s;
法4:
使用gets函数,gets函数是以回车作为结束符
char s[40];
gets(s);
查找字符串中字串字串的位置及次数
字符在字符串中的位置
//可以找出字符首先在字符串中出现的位置。
//字符串从a[0]开始
//#include<cstring>
char a[100],b;
int c;
cin>>a>>b;
c=strchr(a,b)-a;
子字符串在字符串中的位置
//可以找出字符首先在字符串中出现的位置。
//字符串从a[0]开始
//#include<cstring>
char a[100],b[100];
int c;
cin>>a>>b;
c=strchr(a,b)-a
以上2个的总方法find()
string的find()的用法
find(str,position)
str:要找的元素
position:字符串中的某个位置,表示从这个位置开始的字符串中找指定元素,默认从0开始
string s="hello world";
//找到
cout<<s.find("e")<<endl; // 1
//未找到
if(s.find("a")==s.npos)
cout<<"not found"<<endl;
//指定位置查找
cout<<s.find("l",5)<<endl; //从空格开始(包括)开始查找
//第一次出现和最后一次出现
cout<<s.find_first_of("l")<<endl; //2
cout<<s.find_last_of("l")<<endl; //9
//反向查找(从后向前查找)
cout<<s.rfind("l")<<endl; //9
字符与ASSCII码
字母的ASSCII码
取字符的ASSCII码
char c;
int x=c;
取ASSCII码的字符
char c=x;
cin
cin、cin.get()、cin.getline()、getline()的区别
一维数组
动态一维数组
int N;
cin>>N;
int *a;
a=new int[N];
//释放
delete []a;
二维数组
动态二维数组初始化
int **a;
a=new int*[row];
for(int i=0;i<row;i++)
a[i]=new int[colom];
//释放
for(int i=0;i<row;i++)
delete []a[i];
delete []a;
关于数的范围:
带符号32位int类型整数为-2147483648~2147483647
-0拿来做最小的一个数-2147483648
关于函数的传入参数为数组
#include<iostream>
using namespace std;
int max_int(int a[],int N){
int max=a[0];
for(int i=0;i<N;i++)
if(a[i]>max) max=a[i];
return max;
}
int main(){
int N;
while(cin>>N){
int a[N];
for(int i=0;i<N;i++)
cin>>a[i];
cout<<max_int(a,N)<<endl;
}
return 0;
}
string与int的转化
string->int:
int->string:
string s;
s=5+" ";