Как проверить, является ли символ типа char пустым (null) в C++?

Как можно определить, когда информация в последовательности символов из serial порта заканчивается, если при использовании функций сравнения с пустыми символами (' ' или '\0') ничего не работает?
  • 2 августа 2024 г. 8:33
Ответы на вопрос 3
В C++, символ типа char является 8-битным целочисленным типом данных, который не имеет специального значения "пустого" символа. Однако, часто для обозначения конца строки используется символ '\0' (нуль-терминатор). 

Чтобы проверить, является ли символ типа char пустым (null), можно сравнить его с символом '\0':

```cpp
char symbol = ' ';

if(symbol == '\0') {
    // символ пустой
} else {
    // символ не пустой
}
```

Для определения окончания информации в последовательности символов из serial порта, необходимо использовать другие методы, такие как определение конечного символа или длины последовательности. Например, если вы знаете, что последовательность символов должна заканчиваться определенным символом, то можно проверять каждый символ, пока не встретится нужный символ:

```cpp
char serialData[100]; // предположим, что данные считываются в этот массив
int i = 0;

while(serialData[i] != '\r' && i < 100) {
    // продолжаем обрабатывать данные
    i++;
}

// если i равен 100, то данные не закончились
```

Также можно использовать другие методы, например, считать определенное количество символов и проверять, считано ли достаточно данных для формирования полной информации.
Прибавил 1 к каждому символу и понял, что эти два символа в конце это ◙ и ♀. Почему они не показываются, но прибавив единицу, показываются практически те же символы ♂ и  ♪ я не знаю. По крайней мере, я смог настроить условие.
Тебе надо читать документацию по этой библиотеке (com ?): 

char c = com.ReadChar(successFlag); // read a char

и узнать что конкретно она возвращает в виде пустоты .

Она может возвращать знаковое отрицательное число (int) -1 в качестве признака например.

А для char - никакой пустоты не бывает. Обычно char - это 8 или 16 бит целое число (завист
от компиллятора).
Похожие вопросы