How does one represent the empty char?

前端 未结 9 1320
闹比i
闹比i 2020-12-22 18:06

I\'m currently writing a little program but I keep getting this error when compiling

error: empty character constant

I realize i

相关标签:
9条回答
  • 2020-12-22 18:12

    To represent the fact that the value is not present you have two choices:

    1) If the whole char range is meaningful and you cannot reserve any value, then use char* instead of 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
    

    Then you'll have c[i] == NULL for when character is not present and otherwise *c[i] for ordinary characters.

    2) If you don't need some values representable in char then reserve one for indicating that value is not present, for example the '\0' character.

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

    Then you'll have c[i] == '\0' for when character is not present and ordinary characters otherwise.

    0 讨论(0)
  • 2020-12-22 18:17

    There is no such thing as the "empty character" ''.

    If you need a space character, that can be represented as a space: c[i] = ' ' or as its ASCII octal equivalent: c[i] = '\040'. If you need a NUL character that's c[i] = '\0'.

    0 讨论(0)
  • 2020-12-22 18:18

    The empty space char would be ' '. If you're looking for null that would be '\0'.

    0 讨论(0)
  • 2020-12-22 18:18

    String before = EMPTY_SPACE+TAB+"word"+TAB+EMPTY_SPACE;

    Where EMPTY_SPACE = " " (this is String) TAB = '\t' (this is Character)

    String after = before.replaceAll(" ", "").replace('\t', '\0');

    means after = "word"

    0 讨论(0)
  • 2020-12-22 18:22

    You can't store "no character" in a character - it doesn't make sense.

    As an alternative you could store a character that has a special meaning to you - e.g. null char '\0' - and treat this specially.

    0 讨论(0)
  • 2020-12-22 18:27

    There are two ways to do the same instruction, that is, an empty string. The first way is to allocate an empty string on static memory:

    char* my_variable = "";
    

    or, if you want to be explicit:

    char my_variable = '\0';
    

    The way posted above is only for a character. And, the second way:

    #include <string.h>
    char* my_variable = strdup("");
    

    Don't forget to use free() with this one because strdup() use malloc inside.

    0 讨论(0)
提交回复
热议问题