Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пустая строка, определение 
V
    Опции темы
lv151
Дата 13.4.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Как правильно определять, что строка пустая - (str == "") или (GetLength() == 0) ?
PM MAIL   Вверх
Andrey44
Дата 13.4.2009, 11:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



lv151, а str это что?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 13.4.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Код

if ( str.empty() )


Добавлено через 1 минуту и 29 секунд
lv151

если речь идет об std::string
PM   Вверх
lv151
Дата 13.4.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



CString
IsEmpty() - тоже есть. smile

Это сообщение отредактировал(а) lv151 - 13.4.2009, 12:07
PM MAIL   Вверх
andrew_121
Дата 13.4.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



lv151, Пометь решенным!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
inside_pointer
Дата 14.4.2009, 23:41 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Код

*str == '\0';

PM MAIL   Вверх
azesmcar
Дата 15.4.2009, 08:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



inside_pointer

лишь бы что нибудь написать? вы предыдущие посты прочли? это CString, класс МФЦ, причем вопрос давно решен
PM   Вверх
inside_pointer
Дата 15.4.2009, 10:08 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



azesmcar, а что неправильного ? у неё указателя нет, или он указывает не на первый символ ?

Это сообщение отредактировал(а) inside_pointer - 15.4.2009, 10:55
PM MAIL   Вверх
azesmcar
Дата 15.4.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



*str - это ведь не внутренний указатель. Это char* (по всей видимости). И даже если есть, почему правильнее проверять внутренний указатель чем собственно функцией empty, которая кстати говоря с большой долей вероятности инлайн и существует как раз для этой проверки. 
PM   Вверх
mes
Дата 15.4.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(inside_pointer @  15.4.2009,  09:08 Найти цитируемый пост)
azesmcar, а что неправильного ? у ней указателя нет, или он указывает не на первый символ ?

одно то что первый символ находится по индексу 1, а не 0 уже должен предостеречь о таких действий.
а вобще надо стараться не использовать знания о внутренней структуре объекта, и использовать методы предоставляеммые классом.  smile 


--------------------
PM MAIL WWW   Вверх
zim22
Дата 15.4.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(inside_pointer @  15.4.2009,  10:08 Найти цитируемый пост)
 а что неправильного ? у ней указателя нет, или он указывает не на первый символ ?

c std::string такое не прокатит.
Код

std::string *str = new std::string;
if (*str == '\0') // error compile time



--------------------
PM MAIL   Вверх
mes
Дата 15.4.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(zim22 @  15.4.2009,  09:26 Найти цитируемый пост)
c std::string такое не прокатит.

 smile ,только пример не верный, или двойное разъименование используйте, или стринг создавайте не в куче, а то вводите в заблуждение  smile 


--------------------
PM MAIL WWW   Вверх
zim22
Дата 15.4.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



не работает. т.к. operator== string'a не предназначен для сравнения с char
Цитата(mes @  15.4.2009,  10:41 Найти цитируемый пост)
 или двойное разъименование используйте

Код

std::string *str = new std::string;
  **str == '\0';


Цитата(mes @  15.4.2009,  10:41 Найти цитируемый пост)
 или стринг создавайте не в куче,

Код

  std::string str2;
  *str2 == '0';




--------------------
PM MAIL   Вверх
inside_pointer
Дата 15.4.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Код

           struct string {
               char* p;
               int size;   // размер вектора, на который указывает p

               string(int size) { p = new char[size=sz]; }
               ~string() { delete p; }
               string& operator=(const string&);
           };


у Страуструпа в электронной книжке нашёл такое описание, тогда конечно не прокатит, так как указатель у такой строки будет на структуру и, если даже всё таки он первый символ строки выдаст, это будет сопадением (ну типа char *p идёт первым в структуре)
хотя, нашёл ещё такое: если указатель на структуру приводится к типу указателя на её первый элемент, результат указывает на её первый элемент
PM MAIL   Вверх
mes
Дата 15.4.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(zim22 @  15.4.2009,  10:07 Найти цитируемый пост)
не работает. т.к. operator== string'a не предназначен для сравнения с char

естественно и логично, также как и для сравнения char* и char.

но это совсем не то, о чем вел речь inside_pointer.
Он предлогал использовать разъименование, и не работать будет по причине отсутвия у std::string operatora * (Про АнсиСтринг сказать не могу.)
Код

std::string s;
*s; // ошибка компиляции и не важно стоит дальше == или что то другое.


Добавлено через 3 минуты и 35 секунд
Цитата(inside_pointer @  15.4.2009,  10:11 Найти цитируемый пост)
хотя, нашёл ещё такое: если указатель на структуру приводится к типу указателя на её первый элемент, результат указывает на её первый элемент 

1. И где здесь приведение к типу указателя на его первый элемент ?
Цитата(inside_pointer @  14.4.2009,  22:41 Найти цитируемый пост)
*str == '\0';

2. и с какой стати нужное Вам, должно оказаться первым элементом ?!



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.