Я считаю, что hwndTitleValue - это указатель, по крайней мере, в венгерской нотации.Ваш метод выделяет массив байтов (строка ANSI C), поэтому лучший способ сделать это будет
#include <string.h>
// ... other includes ...
int isEmpty(LPSTR string)
{
if (string != NULL)
{
// Use not on the result below because it returns 0 when the strings are equal,
// and we want TRUE (1).
return !strcmp(string, "");
}
return FALSE;
}
Однако вы можете взломать вышеуказанный метод и не использовать strcmp:
#include <string.h>
// ... other includes ...
int isEmpty(LPSTR string)
{
// Using the tip from Maciej Hehl
return (string != NULL && string[0] == 0);
}
Следует отметить, что строка может быть не пустой, а заполненной пробелом.Этот метод скажет вам, что строка содержит данные (пробелы - это данные!).Если вам нужно учесть строки, заполненные пробелами, вам нужно сначала обрезать его.
EDIT : еще одна вещь, которую следует отметить, - что описанные выше методы не учитывают NULLуказатели правильно.Если указатель равен нулю, isEmpty
вернет FALSE, что нежелательно.Мы можем удалить проверку NULL, и тогда она станет ответственностью вызывающей стороны, или мы можем определить, что isEmpty возвращает FALSE в строки NULL.
#include <string.h>
// ... other includes ...
int isEmpty(LPSTR string)
{
// Always return FALSE to NULL pointers.
if (string == NULL) return FALSE;
// Use not on the result below because it returns 0 when the strings are equal,
// and we want TRUE (1).
return !strcmp(string, "");
}