一个人如何代表空的字符?

我目前正在编写一个小程序,但编译时不断收到此错误

错误:空字符常量

我意识到这是因为我试图用空的空间c[i]=''replace一个有效的字符,但是我一直没能find另一种方式来表示它。

你可以使用c[i]= '\0'或简单地使用c[i] = (char) 0

空/空字符只是一个零值,但也可以表示为具有转义零的字符。

你不能在一个字符中存储“无字符” – 这是没有意义的。

作为替代,你可以存储一个对你有特殊意义的字符 – 例如null char '\0' – 并且特别对待它。

空格字符将是' ' 。 如果你正在寻找null将是'\0'

是的, c[i]=''不是有效的代码。 我们在' '之间插入字符常量,例如c[i] = 'A'; char A 但是你不会在''之间写任何字符。

空的空间不过是假设如果你想分配空间,然后做:

 c[i] = ' '; // ^ space 

如果要分配nul char然后做:

 c[i] = '\0'; // ^ null symbol 

例如:如果你有一个string,假设如果c[]一个string(nul \0终止字符数组)。 例如:

 char c[10] = {'a', '2', 'c', '\0'}; 

而你用空格replace第二个字符

 c[1] = ' '; 

如果使用printf打印它如下:

 printf("\nc: %s", c); 

那么输出将是:

  c: ac // ^ space printed 

而你用'\ 0'replace第二个字符

 c[1] = '\0'; 

那么输出将是:

  c: a 

因为string以\0结尾。

没有“空白字符”这样的东西。

如果你需要一个空格字符,可以表示为一个空格: c[i] = ' '或ASCII八进制等效字符: c[i] = '\040' 。 如果你需要一个NUL字符,那就是c[i] = '\0'

为了表示价值不存在的事实,你有两个select:

1)如果整个char范围是有意义的,你不能保留任何值,那么使用char*而不是char

 char** c = new char*[N]; c[0] = NULL; // no character *c[1] = ' '; // ordinary character *c[2] = 'a'; // ordinary character *c[3] = '\0' // zero-code character 

那么当字符不存在时,你将有c[i] == NULL ,否则对于普通字符,将有c[i] == NULL

2)如果你不需要在char表示一些值,则保留一个用于指示值不存在的值,例如'\0'字符。

 char* c = new char[N]; c[0] = '\0'; // no character c[1] = ' '; // ordinary character c[2] = 'a'; // ordinary character 

那么当字符不存在时,你将有c[i] == '\0' ,否则就是普通字符。

在string中分配一个null可能是有用的,而不是显式地使一些索引为null char '\0' 。 我用它来testing处理string的函数,以确保它们保持在合适的范围内。

附:

 char test_src[] = "fuu\0foo"; 

这将创build一个值为8的数组:

 {'f', 'u', 'u', '\0', 'f', 'o', 'o', '\0'}