Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2011, 12:03   #1
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
Подмигивание Есть ли в строке хоть один символ?

Всем привет!
Вопрос следующий
Допустим, имеется строка
Код:
CString str = "        ";
В ней содержатся несколько пробелов и табуляций
Необходимо написать функцию, которая проверяла бы, есть ли в ней хотя бы 1 символ
То есть тут, как я понимаю, есть 2 пути
  1. собрать в символный массив все символы и проверять, есть ли в str хотя бы 1 символ из символьного массива
  2. сделать массив из символа пробела и табуляции и проверять, содержится ли в str что-то, отличное от пробела и табуляции

Может быть, у кого-то будут какие-то другие предложения по поводу решения данной задачи?
Потому что эти черезчур уж тривиальные)
Lindemann66 вне форума Ответить с цитированием
Старый 27.07.2011, 12:24   #2
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

а я думал, что всего лишь str[0] != 0
alex_x_x вне форума Ответить с цитированием
Старый 27.07.2011, 12:32   #3
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от alex_x_x Посмотреть сообщение
а я думал, что всего лишь str[0] != 0
мм, а что это значит?
Lindemann66 вне форума Ответить с цитированием
Старый 27.07.2011, 13:26   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от alex_x_x Посмотреть сообщение
а я думал, что всего лишь str[0] != 0
Не подходит.

Цитата:
Сообщение от Lindemann66 Посмотреть сообщение
сделать массив из символа пробела и табуляции и проверять, содержится ли в str что-то, отличное от пробела и табуляции
Вполне достойный вариант.

С классом CString не знаком, но возможно, у него есть уже готовые методы для такой проверки
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 27.07.2011, 13:36   #5
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

В-общем, так решил проблему
Код:
//процедура, проверяющая строку на пустоту
bool ContentParser::IsEmptyStr(CString str) {
	CString forCompare(" \t\n\r");
	for (int i = 0; i < str.GetLength(); i++) {
		//если в строке есть хотя бы 1 символ, отличный от табуляции и пробела, то строка - не пустая
		if (forCompare.Find(str[i]) == -1) {
			return false;
		}
	}
	return true;
}
может, кому-то это пригодится
P.S. всем спасибо за советы
Lindemann66 вне форума Ответить с цитированием
Старый 27.07.2011, 14:32   #6
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

а как насчет isalpha?
alex_x_x вне форума Ответить с цитированием
Старый 27.07.2011, 14:43   #7
Lindemann66
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от alex_x_x Посмотреть сообщение
а как насчет isalpha?
так isalpha проверяет, является ли символ буквой, а мне надо проверять, является ли символ не табуляцией_переносом строки_каретки_пробелом

мне уж тогда надо is_symbol
Lindemann66 вне форума Ответить с цитированием
Старый 28.07.2011, 01:09   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Lindemann66

Допустим, имеется строка

В ней содержатся несколько пробелов и табуляций
Необходимо написать функцию, которая проверяла бы, есть ли в ней хотя бы 1 символ


CString s = ...
s.Trim();

if (s.GetLength()) { std::cout << "Строка не пустая, насяльника!"; }
Rififi вне форума Ответить с цитированием
Старый 28.07.2011, 01:21   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Lindemann66
Цитата:
а мне надо проверять, является ли символ не табуляцией_переносом строки_каретки_пробелом
Код:
bool isEmptyStr(const string &str)
{ return find_if(str.begin(), str.end(), not1(ptr_fun(::isspace))) == str.end(); }
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 28.07.2011, 02:57   #10
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
Сообщение от Lindemann66 Посмотреть сообщение
так isalpha проверяет, является ли символ буквой, а мне надо проверять, является ли символ не табуляцией_переносом строки_каретки_пробелом

мне уж тогда надо is_symbol
http://www.cplusplus.com/reference/c...ctype/isspace/
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в строке один символ на другой (assembler) fuzo Помощь студентам 1 06.05.2013 12:11
В Дельфе есть возможность - рисуемые обьекты были хоть немного прозрачны? Cabal777 Помощь студентам 7 09.02.2010 20:26
Перенести/Удалить один символ в ячейке Tirendus Microsoft Office Excel 4 31.07.2009 13:15
заменить символ в строке felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 18:38