C 字串結尾是否有0也就是string類的結尾是什麼

2022-12-29 20:16:03 字數 2434 閱讀 9083

1樓:開發經驗分享

c++的每個字串除儲存給定的字串行外都有乙個結束符'\0'(即ascii碼為0的空字元).

如字元常量'm'與字串常量"m",在記憶體中的儲存為:mm0

2樓:科舉網7號助教

是的。比如說

char c="hello";

等價於char c=;

3樓:今夜無醉眠

s[i].id == f[1].d

你這樣是比較這兩個字串的位址是否相同

c風格字串,也就是0結尾字串的比較要借助strcmp如果strcmp( s[i].id, f[1].d ) == 0則說明他們兩個相等

你那樣做是不行的

另外可以使用標準庫的string

#include string

std::string a = "123";

std::string b = "123";

if ( a == b ) // 這裡就可以直接用==來比較了,因為string過載了==,以比較兩個字串的內容是否相同

使用strcmp需要包含標頭檔案cstring或者string.h

4樓:龍天騎士

'\0 '是字串結束的標誌

5樓:匿名使用者

string類的字串的結尾是\0,

string是類,類哪有什麼結尾呢?

c++中string是否以\0表示字串結束?

6樓:匿名使用者

stl的string也是已'\0'作為字串結束標誌。

str="hello\0\0world!";

str的值是"hello\0"

7樓:匿名使用者

如果你cout << str;這樣輸出的結果確實為hello,後面的內容輸出不來,但是仍然存在的。你仍然可以通過str[6]這種方法得到。補充:

如果str是string則不是這樣,後面的東西就沒了,如果str是char*才會是這樣。

你說的stl中的string這種型別,它是做了封裝的,它相當於c++中的乙個類,就像你自己也可以寫個模擬如這樣:

class mystring

;//其它成員變數和函式

};但是在這個類裡面的data和c語言裡的指標仍然一樣的,比如你呼叫print函式時,它用cout輸出data,此時也要求data指向的字串必須以\0結尾,不然c++怎麼知道輸出多少個char

8樓:丨嗚呼哀哉

恩,幾乎所有的字串都是\0結束……就是這麼定的……

9樓:傳小奇

你說的這個方面是一樣的。

c++是又c語言發展而來,很多東西都很相似,你主要把他們的區別記一下,其它的都按照c語言來用

10樓:哥很牛叉

是的,不信你去試試。

c++中string類物件不使用空字元『\0』來標記字串結尾,那麼下面的**為什麼會在字串結尾結束?

11樓:類人界異

reference operator( size_type pos );

(1)const_reference operator( size_type pos ) const;

(2)返回到位於指定位置 pos 的字元的引用。不進行邊界檢查。若 pos > size() ,則行為未定義。

1) 若 pos == size() ,則行為未定義。

2) 若 pos == size() ,則返回到擁有值 chart() 的字元(空字元)的引用。

(c++11 前)

若 pos == size() ,則返回到擁有值 chart() 的字元(空字元)的引用。

對於第一(非 const 版本),若修改此字元為任何異於 chart() 的值,則行為未定義。(c+

c++字串結尾不是『\0』嗎?為什麼我測試輸出的是任意字元

12樓:

不存在你說的問題。'\0'就是ascii碼00000000,它是打不出來的。另:c++的char字串仍然是以'\0'結尾的,而string字串物件不是以'\0'結尾的。

c++ c字串不以'\0'結尾會出現的問題

13樓:匿名使用者

'\0'字串會一直讀取到有'\0'才會停止,所以你那2個沒見過的字元後面肯定有'\0'所以才停止了。

14樓:匿名使用者

會在dos介面輸出亂碼,其實就是說會無限地輸出直到你的陣列長度為止,就是一種陣列越界的問題。

15樓:匿名使用者

\0 是ascall碼的null吧

在c 裡的字串為什麼有兩種,c 中字串為什麼有兩種形式? c style 和 string 有什麼區別?

看到c style 和string的區別 在c 裡,7 string str1 hello 8 string str2 str1 9 char p str1 1 10 string str3 str1 11 printf p n str1.c str 0x8bbf02c 12 printf p n ...

用c語言怎麼判斷字串是否為空用C語言怎麼判斷乙個字串是否為空?

空格和字串為空的概念本來就不一樣,如樓上所說空格本來就代表一 專個字元屬,而空字串直接為 0 如果你要把空格的字串也定義為空字串的話就要加判斷 空格的ascii碼為32 你只需要再多加乙個遍歷判斷就ok int isempty 0 int length strlen 變數 int n 遍歷整個字串,...

c語言填空判斷輸入的字串是否是「回文」。若是回文,函式返回1否則函式返回

1 s n 1 2 p 3 return 0 4 gets a 或scanf s a c語言編寫函式,判斷乙個字串是否是回文。若是回文函式返回值為1,否則返回 先看bai是幾位數。du假設是zhi4位 inta,a1,a2,a3 輸入回文dao數 scanf d a a1 a 10 a2 a 10 ...