C 儲存和處理字串

2021-10-05 11:08:29 字數 3125 閱讀 7283

字串常量

定義字串常量是用一對雙引號括起來的字串行,例如「this is a string」,"hello,world"都是字串常量。由於雙引號是字串的限界符,所以字串中間的雙引號就需要用轉義字元來表示。例如"please enter \"yes \ " or \"no\""就表示please enter"yes" or "no"存放

字串常量在記憶體中的存放形式是,按串中字元的排列次序順序存放,每個字元佔乙個位元組,並在末尾新增'\0'作為結尾標記。這實際上是乙個隱含建立的型別為char的陣列,乙個字串常量就表示這樣乙個陣列的首位址。因此,可以把字串常量賦值給字串指標,由於常量是不能改的,應將字串常量賦給指向常量的指標,此時可以直接輸出。

const

char

* string1=

"this is a string."

;cout<

字串變數

字串變數也可以用類似的方式來表示。如果建立乙個char陣列,每個元素存放字串的乙個字元,在末尾放置乙個'\0',便構成了c++字串。它的儲存方式和字串常量一致,也是順序存放,每個字元佔乙個位元組。但是,用於存放字串的陣列的元素個數不能小於字串的長度,即字串陣列的長度最小等於字元個數+1

初始化字元陣列初始化,可以是以逗號隔開的ascii碼(這時候需要有』\0』)或者字元常量,也可以是整體的字串常量(這時候末尾的』\0』是隱含的)。下面列出的語句都可以建立乙個初值為"hello,world"的字串常量,3種寫法是等價的。

初始化列表

指定字元陣列長度

未指定字元陣列長度

char str[12]

=;char str1[12]

="hello,world"

;char str2=

"hello,world"

;

三者的列印

const

char

* s1=str;

const

char

* s2=str1;

const

char

* s3=str2;

cout<

cout<

cout<

記憶體中hello,world陣列儲存如下

陣列下標01

2345

6789

1011內容h

ello

,wor

ld\0c語言字串處理函式

補充string.h標頭檔案下常用的字串處理函式

函式名功能

char *strcat( char *str1, const char *str2 );

函式將字串str2 連線到str1的末端,並返回指標str1

char *strchr( const char *str, int ch );

函式返回乙個指向str 中ch 首次出現的位置,當沒有在str 中找ch到返回null。

int strcmp( const char *str1, const char *str2 );

比較字串str1 and str2返回值如下less than 0 :str1 is less than str2 ; equal to 0 :str1 is equal to str2 ;greater than 0 :str1 is greater than str2

char *strcpy( char *to, const char *from );

複製字串from 中的字元到字串to,包括空值結束符。返回值為指標to。

成員函式

常用成員函式功能簡介

成員函式

功能將字串s新增到本串尾

string assign (const char *s);

賦值,將s所指向的字串賦值給本物件

int compare(const string & str) const;

比較本串與str中串的大小,當本串<str串時,返回負數;當本串>str串時,返回正數;兩串相等時,返回0

string & insert(unsigned int p0,const char* s);

將s所指向的字串插入在本串中位置p0之前

string substr(unsigned int pos,unsigned int n) const;

取子串,取本串中位置pos開始的n個字元,構成新的string類物件作為返回值

unsigned int find(const basic_string &str) const;

查詢並返回str在本串中第一次出現的位置

unsigned int length() const;

返回串的長度(字元個數)

void swap(string & str);

將本串與str串中的字串進行交換

下面是string類的一段測試**

#include

#include

using

namespace std;

//根據value的值輸出true或false,title為提示文字

inline

void

test

(const

char

* title,

bool value)

intmain()

測試結果如下

s1 is def

please enter s2:azheng

length of s2: 6

s1<="abc"returns: false

「def」<=s1returns: true

s2=s2+s1:azhengdef

length of s2:9

C 字串處理

private static regex regnumber new regex 0 9 private static regex regnumbersign new regex 0 9 private static regex regdecimal new regex 0 9 0 9 privat...

C 字串處理

string字串是char的集合,而char是unicode的 所以char可以轉化為int。字串在引數傳遞時為引用傳遞 可以使用空字串 一 字串型別轉換 1.轉為char 可以用索引器來得到字串中指定的字元,如 string mystring hello char mychars mychars ...

C 字串處理

void memccpy void dest,const void src,int c,size t n 從src所指向的物件複製n個字元到dest所指向的物件中。如果複製過程中遇到了字元c則停止複製,返回指標指向dest中字元c的下乙個位置 否則返回null。void memcpy void de...