C/C++字符串使用整理
一、用字符數組存儲字符串,這是從C語言中繼承的
1、聲明
char name[6]={'l','i','u','h','a','\0'};或者 char name[6]="liuha";或者char name[6]={"liuha"};
這幾種聲明方式都是等價的,字符數組中會自動存儲字符串的結束符'\0'
?
2、字符數字的輸入輸出
char name[6];?
一次性輸入輸出:cin>>name;cout<<name;? //name表示數組中第一個值的地址
循環輸入輸出:for(int i=0;i<6;i++)
????????????????????? {
????????????????????????????? cout<<name[i];
????????????????????????????? cin>>name[i];
?????????????????????? }?
若數組為二維:char namenum[3][2]
for(int i=0;i<3;i++)
?? {
???????? cin>>namenum[i];?????? //一次輸入一行
?? }
?
3、字符數組的函數(包括頭文件string)
??? strcat(字符數組1,字符數組2);? strcpy(字符數組1,字符數組2);?? strcmp(字符數組1,字符數組2);?? strlen(字符數組);??
二、C++中增加了string頭文件
1、聲明(包括頭文件)
??? string param="I Love China"; ? //必須附加頭文件string
??? param中存儲的只有“I Love China”,沒有字符串結束符
2、字符串的輸入輸出
?? cin>>param;cout<<param;
3、字符串的函數
string str1,str2;
連接函數?? string str=str1+str2;
比較函數?? if(str1>str2)
?
三、字符串數組
string name[3]={"zhangsan","lisi",“wangwu”};
name[0]中存儲的只是“zhangsan”,不包括字符串結束符;
?
四、string和char的區別
string str1,str2???? char str1[MAXSIZE],str2[MAXSIZE]? //假定要定義的char類型字符串數組的大小為MAXSIZE
?
比較:>,==,<,>=,<=等
?????? String類型:str1==str2;str1>=str2;str1<=str2 就不一一列舉了,可以看出,string類型字符串比較是非常方便的,直接就像int類型那樣直接比就可以了(當然比法是不一樣的)
?????? Char類型:strcmp(str1,str2); 有返回值的,str1<str2 返回負數,str1==str2返回為0,str1>str2返回正數。某真心感覺很麻煩,每次比較都要用函數,當然也可以進行運算符重載直接像string類型那樣比較,如果不嫌麻煩的話。
?
復制拷貝:
將str2中內容復制到str1中
string類型:str1=str2 ?????? char類型:strcpy(str1,str2);
string類型變量在定義的時候還可以拷貝構造函數,如string str1(str2);
?
連接:
將str2中內容連接到str1后頭
String 類型:str1+=str2??? char類型:strcat(str1,str2);
?
統計字符個數(字符串長度):
統計字符串中字符的個數:
String類型:str1.length();? str1.size();返回的值都是str1的長度
Char 類型:strlen(str1); 返回的值是str1的長度
?
清空字符串變量中所有數據:
String類型:str1..~string();
????????????? 或者:str1=””;
?
將char類型字符串轉換成string類型:
char str1=”***”;
string str2(str1);
?
將string類型轉換成char類型:
strcpy(str2,str1.c_str());
前邊的str2是char類型的字符串,后邊str1是string類型的。注意轉換千萬別越界
string中的某一個字符是可以直接保存到char類型字符中的,例如
string str=”123”
如ch=str[1];
那么輸出ch打印出來的是2
字符串中的某一字符轉換成int類型數字:
int num=str[i]-‘0’;
?
字符串類型與整數類型互相轉換:
字符串轉換成整數:
用atoi()函數,C語言中頭文件是#include<stdlib.h>(C++中是#include<cstdlib>)
用法:atoi只能轉char *類型的,如果是string類型的,需先轉成char類型
int num=atoi(str);
?
整數轉換成字符串:
Itoa()函數,將整數轉換成char類型
itoa(num,str, radix);
num是int類型數字,str是最終轉換成char的結果,radix是用多少進制保存,如2、8、10、16進制等
?
字符串中查找子串:
find()函數:
字符串詳細內容見大神博客:
http://blog.csdn.net/laobai1015/article/details/62426137
基本用法
int key=find(str1,str2);
其中str1、str2都是string類型,函數的意思是在str1中查找str2第一次出現的位置并返回這個值,如果不存在則返回-1
?
strstr()函數:
char *str3=strstr(str1,str2);
str1,str2均為char*類型,函數的意思是在str1中查找str2,返回第一次出現str2的地址,如果沒有找到則返回空
例如str1=”My name is”;??? str2=”name”;
那么返回的str3為“name is”;
string類型中,字符串字串的截取:
?
substr()函數,用于string類型
string str;
str.substr(startnum, len);
其中 startnum 是起始字符的序號,len是從起始字符開始截取的字符串長度
那么,若要截取str中序號m到n間(其中不包括n)的子字符串則為
str.substr(m, n-m);
?
strtok()函數,用于char類型
char *str=strtok(str1,str2);
將字符串str1沿著str2切割,返回的是char*
?
轉載于:https://www.cnblogs.com/L-X-H-Blue-Ocean/p/10795727.html
總結
以上是生活随笔為你收集整理的C/C++字符串使用整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 像@Transactional一样利用注
- 下一篇: 反Secure Boot垄断:兼谈如何在