日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++存储和处理字符串

發布時間:2025/4/5 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++存储和处理字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.用字符數組

字符串常量

定義

字符串常量是用一對雙引號括起來的字符序列,例如“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<<STRING1;

字符串變量

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

初始化

字符數組初始化,可以是以逗號隔開的ASCII碼(這時候需要有’\0’)或者字符常量,也可以是整體的字符串常量(這時候末尾的’\0’是隱含的)。下面列出的語句都可以創建一個初值為"Hello,World"的字符串常量,3種寫法是等價的。

  • 初始化列表
  • 指定字符數組長度
  • 未指定字符數組長度
  • char str[12]={'H','e','l','l','o',',','W','o','r','l','d','\0'};char str1[12]="Hello,World";char str2[]="Hello,World";

    三者的打印

    const char* s1=str;const char* s2=str1;const char* s3=str2;cout<<s1<<endl;cout<<s2<<endl;cout<<s3<<endl;

    內存中Hello,World數組存儲如下

    數組下標01234567891011
    內容Hello,World\0

    C語言字符串處理函數

    補充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。

    2. string類

    成員函數

    常用成員函數功能簡介

    成員函數功能
    string append (const char* s);將字符串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<iostream> #include<string> using namespace std;//根據value的值輸出true或false,title為提示文字 inline void test( const char* title,bool value){cout<<title<<"returns: "<<(value ?"true" :"false")<<endl; }int main(){string s1="DEF";cout<<"s1 is "<<s1<<endl;string s2;cout<<"Please enter s2:";cin>>s2;cout<<"Length of s2: "<<s2.length()<<endl;//比較運算符的測試test("s1<=\"ABC\"",s1<="ABC");test("\"DEF\"<=s1","DEF"<=s1);//連接運算符的測試s2+=s1;cout<<"s2=s2+s1:"<<s2<<endl;cout<<"length of s2:"<<s2.length()<<endl;}

    測試結果如下

    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++存储和处理字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。