Задать вопрос
@have_a_nice_day13

Проверить пуста ли строка?

Каким должным образом я могу проверить пуста ли строка, если перед ее использованием она проходит через операцию с resize и memset?

int main()
{
    std::string test;

    test.resize(16);
    std::memset(test.data(), 0, 16);

    printf(test.empty() ? "empty" : "not empty");
}
result - not empty
  • Вопрос задан
  • 3081 просмотр
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
empty - размер контейнера
size/length возвращает чисо символов в строке, причём она может состоять из кучи '\0'.
Поэтому нужно проверить, что строка имеет нулевую длину, либо нулевой символ навен '\0'.
if( test.empty() || test[0] == '\0' ) ...
Ответ написан
@PrizmMARgh
Для сравнения строк есть специальный метод
(string.h) int strcmp( const char * string1, const char * string2 );
Однако, вам достаточно проверить строку на пустоту. Строка пустая, если первый же символ - символ конца строки, поэтому условие должно выглядеть так:
test[0] == '\0'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы