c++字串處理?
在c++中,有兩種字串,一種是從c沿襲過來的,稱為c-字串,簡稱c-串。c-串是以乙個全0位(整數0)位元組作為結束符的字串行。該全0位元組即是8位的整數0,也是ascii碼的0。
c-串還稱為ascii串(即ascii字串行加上尾巴zero)。
c-串也是字串字面值,其格式為雙引號括起來的字串行,例如,"hello!",它在空間的儲存形式為:
'h''e'' l '
' l '
' o '
' ! '0
很顯然,c-串的空間長度為字串長度加1。(ps:c-串的字串行總是新增乙個結束標誌)如果要將c-串放到字元陣列,則元素個數非比字元數多1不可。
char buffer[7]="hello!" //若為char buffer[6]="hello!";則為錯誤。
字元字面值的型別為char,那麼c-串又是什麼型別呢?c-串的型別為char*,說得更準確一點,是const char*。事實上,所有的字面值型別都是const的。char* 為字元指標,它與字元陣列不同,但操作上是一樣的,都表示c-串的起始位址。
指標是表示記憶體空間位置的型別。字元指標就是所指向的空間位置上的值,當做字元來操作的型別。
例如:char* str="hello";
cout<
cout/顯示hellostr是字元指標變數。*str是字元指標變數的間接引用。即,若str指向「hello」的首位址,則*str表示該位址代表的空間上的值----『h』。
輸出字元指標就是輸出c-串。所以輸出str時,便從『h』字元的位址開始,輸出所有字元直到遇到0。輸出字元指標的間接引用,就是輸出單個字元。所以輸出*str時,便輸出str所指向的字元『h』。
經典例子:
#include "stdafx.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _tchar* argv)
//由於c-串型別是字元指標,因此,比較兩個相同的c-串的時候,會因空間的位置的不同而不同。
//而且,分別儲存兩個相同c-串的字元陣列,其陣列比較也會是不相同的。
字元指標和字元陣列的區別:字元陣列是由若干個元素組成的,每個元素存放乙個字元;而字元指標變數存放的是字元首位址。
賦值方式不同,字元陣列只能對各個元素分別賦值;而字元指標只需要賦值給字串的首位址就好。
字元指標占用的記憶體要少於字元陣列。
指標變數的值可以改變;而字元陣列名雖然代表位址,但它的值不會變化。
這些庫函式的操作,預設在string.h的標頭檔案中。由於bab編譯器的iostream標頭檔案巢狀包含了它,所以程式中省略了#include
----------------->strcpy 讀作 string copy;
其函式宣告為:char* strcpy(char* x1, char* x2);
該函式將x2字串拷貝到x1所在位置,不論x1字串先前是什麼內容,拷貝之後都將被所拷貝的內容覆蓋。拷貝函式被呼叫之後,返回x1引數的首位址,目的是讓呼叫結果可以直接參加之後的字串操作。
(由於x2字串的長度比x1字串空間的要長,所以strcpy的使用並不安全,需要程式設計時謹慎考慮。很可能發生不可預料的執行錯誤)
------------------>strcmp 讀作 string compare;
其函式宣告為:int strcmp(char* x1, char* x2);
它表示x1串與x2串進行字典序比較。如果x1小則返回值為負數;如果x1大,則返回非0正數;如果二者相等,則返回0。
------------------->strcat讀作string concat;
其函式宣告為:char* strcat(char* x1, char x2);
它將x2字串的內容接在x1字串之後,或者說,將x2字串拷貝到x1字串結束處。所返回的x1字串的結果可以直接參加之後的操作。
(該呼叫會引起x1字串加長,或者說,結束符0的位置靠後。在x1字串之後所餘自身空間不足以接納x2字串時,呼叫函式將不安全。)
-------------------->strrev讀作string reverse;
其函式宣告為:char* strrev(char* x);
它將字串倒過來,並改變原來的儲存,同時直接將結果子串返回,以便於其後的操作。
-------------------->strset讀作string set;
其函式宣告為:char* strset(char*, char b);
它將x整個字串的每個字元都用b字元來取代,並將x作為結果返回。
--------------------->strstr讀作string substring;
其函式宣告為:int strstr(char* x, char* s);
該函式在x字串中查詢s字串。若找到,則返回整數1,否則返回整數0。
--------------------->strchr讀作string char;
其函式宣告為:int strchr(char* x, char b);
該函式在x字串中查詢b字元。若找到,則返回整數1,否則返回整數0。
待續(
Python學習 字串處理
題目內容 pig latin 是乙個英語兒童文字改寫遊戲,整個遊戲遵從下述規則 1 母音字母是 a e i o u 字母 y 在不是第乙個字母的情況下,也被視作母音字母。其他字母均為子音字母。例如,單詞 yearly 有三個母音字母 分別為 e a 和最後乙個 y 和三個子音字母 第乙個 y r 和...
c 基礎學習 字串處理
一 常用比較字串 1.string1.equals string2 比較string1和string2是否相同 區分大小寫 tolower 將字串轉換為小寫 toupper 將字串轉換為大寫 2.string1.compareto string2 string1等於string2 返回0,strin...
批處理學習 字串擷取
echo off set ifo abcdefghijklmnopqrstuvwxyz0123456789 echo 原字串 第二行為各字元的序號 echo ifo echo 123456789012345678901234567890123456 echo 擷取前5個字元 echo ifo 0,5...