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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C风格字符串与C++风格字符串

發布時間:2023/12/10 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C风格字符串与C++风格字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C風格字符串與C++風格字符串

C風格字符串:對字符串進行操作的 C 函數定義在頭文件<cstring>中;

???? 1. 字符串定義:char* result;

???? 2. 字符串的最后一個字符是null字符('\0'),可以通過這個字符確定字符串的結尾。

?????3. strlen()返回的是字符串的大小;因此,分配空間的時候,需要比字符串的實際空間大1.

???? e.g. char* copyString(const char* inString)

????????? {

???????????? char *result = new char[strlen(inString)];//BUG! off by one

?????????????strcpy(result, inString);

???????????? return result;

?????????? }

??????explain: strlen()返回的是字符串的大小,比如"ab",返回的是2。而在new進行分配的時候,需要為'\0'分配一個空間。分配語句要寫作,char *result = new char[strlen(inString) + 1];

??? 4. strcpy(a,b):將字符串b的內容賦值給字符串a;a的大小可以大于b,將b放在a的開始的位置;

????? strcat(a,b):將字符串b拼接到字符串a的現有字符后面;

C++風格字符串:使用C++風格字符串的時候,要將它當做是一個普通的類型,如int,這樣反而會避免將string作為一個類來理解所帶來的很多問題。

???? 1. 支持<cstring>中許多函數完成的同樣操作。

???? 2. 字符串定義:string myString = “hello”;

???? 3. 操作符 = :復制字符串;比如,string?newone = original;會將后者復制給前者,不會出現兩個變量同樣指向一個內存的情況。

???? 4. 可以像int一樣使用 == 之類的操作符

???? 5. 可以改變字符串中的某一個字符。 如 string myString = "hello"; mystring[0] = 'l'; 這中操作是允許的。

字符串直接量:字符串沒有變量名字,自身表示自身。

??? 1. string literal:字符串直接量: e.g. cout<<"hello"<<endl; 代碼中通過包含"hello"字符串自身來將其輸出,并未包含該字符串的變量。

??? 2. 字符串直接量可以賦值給變量,但是與字符串直接量相關聯的內存空間位于只讀部分,因此它是常量字符數組。

????????char* ptr = "hello";

????????ptr[1] =?'a';//crash!?attemps to write to read-only memory.

??? 因此,當引用字符串直接量的時候使用指向const的字符數組:

?????? const char* ptr = "hello";

?????? ptr[1] = 'a';//bug! attempts to write to read-only memory.

??? 3. 當將字符串直接量賦值給字符數組的初始值的時候。由于字符數組存放與棧中,不允許引用其他地方的內存,因此編譯器會將字符串直接量復制到站的數組內存中。因此,可以進行相應的修改。

????? char? stackArray[] = "hello";

????? stackArray[1] = 'a';

?

轉載于:https://www.cnblogs.com/yymn/p/5127506.html

總結

以上是生活随笔為你收集整理的C风格字符串与C++风格字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

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