一,c字串
c語言中, 沒有字串的資料型別,可使用乙個以null('\0')字元結尾的字元陣列來儲存字串。
只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。
相關函式等在標頭檔案 注:
是c版本的標頭檔案,包含比如strcpy()之類的字串處理函式。
在c++標準化(2023年)為了相容以前將所有這些檔案都進行了新的定義,加入到了標準庫中,加入後的檔名就新增了乙個"c"字首並且去掉了.h的字尾名,所以string.h標頭檔案成了cstring標頭檔案。
是c++標準定義的標頭檔案,定義了乙個string的字串類幷包含了string類的各種操作。同時又包含了老的c版本的字串操作。
1.
使用字元陣列存c字串
定義時可以利用"="號進行初始化,但之後不能用"="對c字串再賦值。再賦值可用strcpy()。
在c中也可以使用字元指標
來訪問乙個字串,通過字元指標指向存放字串陣列的首元素位址來進行訪問。
注意體會下例子注釋:
char a[11] = "kobe";//字串的初始化
//a="kobebryant"不能如此賦值!!
strcpy(a,"kobecryant");//字串的賦值
a[4]='b';
//獲取字串的長度,不包括'\0'在內
int n=strlen(a);
printf("%s\n",a);
char *b = "kobe mvp!";
b="kobe 24mvp!!";//指標可以這樣賦值!!
//b[7]='g';錯誤!
printf("%s\n",b);
2. 一些常用函式用法:
#include#includeint main()
上述執行結果:
二,c++字串
string並不是c++語言本身具有的基本型別,它是在c++標準庫中宣告的乙個字串類,用這種類可以定義物件。每乙個字串變數都是string類的乙個物件。使用string型別,我們必須包含標頭檔案
1,宣告與初始化
string str;
上面的宣告沒有傳入引數,所以就直接使用了string的預設的建構函式,這個函式所作的就是把str初始化為乙個空字串。
string類的建構函式和析構函式如下:
string s1
string s2(s1)
string s2=s1
string s3("value")
string s3="value"
string s(num,'c') //生成乙個字串,包含num個c字元
2. 輸入
(1)方法一:
cin>>s;
cout<
會忽略空白,從不是空白讀取到空白結束,空白指空格符換行符製表符等
(2)方法二:
使用getline函式可以保留空白,每次讀入一行遇到換行符為止。
例如:
#include#includeint main(){
std::string line;
while(getline(std::cin,line))
std::cout<
3. 物件操作函式(網上整理而來未全檢試)
隨機讀:
const char &operator(int n)const;
const char &at(int n)const;
char &operator(int n);
char &at(int n);
#include#includeusing namespace std;
int main(){
string s="kobe bryant",s2;
cout<
operator和at()均返回當前字串中第n個位置的字元,但at函式提供範圍檢查,當越界時會丟擲out_of_range異常,下標運算子不提供檢查訪問。
屬性:
string &insert(int p0, int n, char c);//此函式在p0處插入n個字元c
iterator insert(iterator it, char c);//在it處插入字元c,返回插入後迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it處插入[first,last]之間的字元
void insert(iterator it, int n, char c);//在it處插入n個字元c
刪除:iterator erase(iterator first, iterator last);//刪除[first,last]之間的所有字元,返回刪除後迭代器的位置
iterator erase(iterator it);//刪除it指向的字元,返回刪除後迭代器的位置
string &erase(int pos = 0, int n = npos);//刪除pos開始的n個字元,返回修改後的字串
三,c和c++之間的轉化
1.關鍵:
const char *data()const;//返回乙個非null終止的c字元陣列
const char *c_str()const;//返回乙個以null終止的c字串
int copy(char *s, int n, int pos = 0) const;//把當前串中以pos開始的n個字元拷貝到以s為起始位置的
字元陣列
中,返回實際拷貝的數目
2.string-> const char *
兩種方法:
string s1="kobebryant";
const char *a=s1.c_str();
const char *b=s1.c_str();
cout char *
#include#include#includeusing namespace std;
int main(){
string s1="kobebryant 123";
char *c;
int len=s1.length();
c=(char*)malloc((len)*sizeof(char));
s1.copy(c,len,0);
cout<
4. char *->string
string s;
char *p="kobe mvp!";
s=p;
cout<
5. char[ ]->string
string s;
char p[10]="kobe mvp!";
s=p;
cout<6. string->char[ ]
string s = "kobe bryant";
char a[12];
for( int i=0;i
datetime與字串相互轉化
之前處理資料時,獨取出來的時間資料自動轉化成了str形式,我總是忘記處理的語句,在此做個筆記提醒自己。python標準庫包含用於日期 date 和時間 time 資料的資料型別,而且還有日曆方面的功能。我們主要會用到datetime time以及calendar模組。datetime.datetim...
Python bytes與字串的相互轉化
by.decode encoding utf 8 errors strict str.encode encoding utf 8 errors strict 1 usr bin env python2 coding utf 8 34 5 title 6 time 2020 2 21 15 5678 ...
數字與字串相互轉化 Unicode
vc中數字與字串轉換方法 1,char是最原始的字元資料型別,在非unicode版本的arx中使用 2,wchar t是寬位元組字元型別,在unicode版本中的arx中使用 3,t 是乙個巨集,可以將裡面的字串轉化成所在工程環境中的字元型別 4,tchar是unicode的一種,等同於 t 這個巨...