Tips
C语言里压根就没有string这个类,所以字符串都是通过char数组来存储的,而这个头文件里声明的函数原型也全是针对char数组的种种操作。直到C++中才出现了string这个类(注意是类,不是类型)
大小写转换
1 2 3 4
| char 大写字母 = 小写字母-'a'+'A'; char 大写字母 = toupper(小写字母);
char 小写字母 = tolower(大写字母);
|
string char[] int 之间的相互转换
string 转 char[]
1 2 3
| string s; char a[100]; a=s.c_str();
|
string 转 int
1 2 3 4 5 6 7 8
| string s="123";
int a=stoi(s);
int a=atoi(s.c_str());
|
char[] 转 string
1 2 3
| char ch[]="abc";
string s=ch
|
char[] 转 int
1 2
| char ch[]="124"; int a=atoi(ch);
|
int 转 string
1 2
| int a=123; string s=to_string(a);
|
int 转 char[]
1 2 3 4
| int number =123; char s[10]; itoa(number, s, 10); cout<<s<<endl;
|
1 2 3 4
| int number =123; char s[10]; sprintf(s,"%d",number); cout<<s<<endl;
|
字符串读取
getline(cin,string_namae,end_char)读取一行
接受一个字符串,可以接受空格并输出
1 2 3 4 5
| string str; getline(cin,str); cout<<str<<endl;
getline(cin,str,'a');
|
当同时使用cin>>
和getline(cin,str)
的时候,在cin>>
输入完成之后,getline(cin,str)
(str是真正想要的串)之前,需要先getline(cin,str)
(这个str是一个打算用来存储换行符的串);将换行从输入流缓存中清除
1 2 3 4 5
| int n; string line; cin>>n; getline(cin,line); getline(cin,line);
|
gets(char*)读取一行
1 2 3
| char t[100]; gets(t); puts(t);
|
STL string常用方法
截取
1 2 3 4
| string line="abcdefg"; int st=3,len=2; string s1=substr(line,st,len);
|
查找
1 2 3 4
| int idx= line.find("cde");
int idx=line.find("cde",2);
|
插入
1 2 3 4
| string str="0123456"; string s="aa"; str=s.insert(4,s);
|
大小写转换
1 2 3
| transform( str.begin() , str.end() , str.begin() , ::tolower ); transform( str.begin() , str.end() , str.begin() , ::toupper );
|
string.h头文件
strlen(char*)
strcmp(char* a, char* b)
字典序比较
- a<b;返回负整数
- a==b;返回0
- a>b;返回正整数
strcpy(char* a ,char* b)
把a复制给b
strcat(char* a ,char* b)
把b接到a后面
sscanf和sprintf
scanf(char* , "" ,&)
1 2 3 4 5
| char t[100]; gets(t);int a; sscanf(t,"%d",a); sscanf(t,"%d:%lf,%s",&n,&db,str);
sprintf(t,"%d",a);
|
字符串的比较
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| char a[] = "aaa",b[]="aaa"; string A = "AAA", B = "AAA"; cout <<"*a和*b的值分别是:" <<*a << "," << *b << endl; cout <<"*“aaa”的值是:"<< *"aaa" << endl;
cout <<"利用 == 比较a,b两个字符串,结果是(相等为1,不等为0):" <<(a==b) << endl;
cout << "利用strcmp()比较a,b两个字符串,结果是(相等为0,不等非0):"<<strcmp(a,b) << endl; cout << "利用 == 比较A,B两个string,结果是(相等为1,不等为0):"<<(A==B) << endl; cout << "利用compare()比较A,B两个string,结果是(相等为0,不等非0):" << A.compare(B) << endl;
return 0;
|
int isdigit(char)
isdigit
是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。
1 2 3 4 5
| #include <ctype.h> #include <cctype>
|