2012-04-08 123 views
-2

我有一個關於C++中的字符串的問題。如果空字節進一步進入一個索引會發生什麼? 如下所示。C++中的空字符串

char name [10] = "Jack"; 

0 1 2 3 
J | a | c | k | 

name [5] = '\0'; 

這是國家在我的功課。額外零kludge。

+0

試試看.... – littleadv 2012-04-08 01:10:28

+1

取決於你用'name'做什麼。 – 2012-04-08 01:10:54

+3

提示:字符串文字'「傑克」'已經有一個空終止符在它。 – 2012-04-08 01:12:01

回答

5

你是什麼意思「將會發生什麼」?

根據你寫的內容,你只需創建一個10個職位的陣列,用Jack\0填充第一個5個職位,然後將\0分配到第六個職位。每個使用字符串的函數都會以完全相同的方式處理它,因爲字符串通常以\0結尾。

+0

我的意思是字符串的長度會保持4?或者它會變爲5,因爲我將空值添加到索引5中。 – user1318393 2012-04-08 01:18:51

+2

@ user1318393:取決於「字符串長度」的含義。如果字符串的長度定義爲空終止符之前的非空字符的數量(這是'strlen()'的工作方式),那麼長度保持不變。一些字符串表示允許空字符出現在字符串本身中;在這種情況下,你會將長度從4增加到5.沒有談論它是如何表示的,詢問「這個字符串多長時間」是毫無意義的。有一些字符串表示法,其中一行中的兩個空字符實際上意味着重要的東西。 – 2012-04-08 01:20:06

+1

@ user1318393在您的示例中,您的字符串與您的數組不一致。當你分配'「傑克」'你已經把'\ 0'放在第五位。您可以修改字符串末尾的每個元素,這不會影響您的「字符串」。除非你修改第五個位置(刪除'\ 0'),否則你的字符串將保持長度爲4(至少根據「字符串長度」的常見含義)。 – Saphrosit 2012-04-08 01:25:21