powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Set operators
9 сообщений из 9, страница 1 из 1
Set operators
    #34025719
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На дельфи есть роскошный оператор работы с наборами.
Что-то типа:
Код: plaintext
1.
2.
3.
var P : PChar;
...
While not (P^ in [# 0 , # 9 , # 10 , # 13 , ' ', '0..9', MyDelimitersSet]) do inc(P);

Недавно необходимость возникла портировать код на eVC...
пришлось для этого дела прописывать функцию с циклом...

Есть ли в С++ возможность не слишком громоздко сделать то же самое, но без описания дополнительного метода?

Заранее пасип. :)
...
Рейтинг: 0 / 0
Set operators
    #34025851
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Makar4ikНа дельфи есть роскошный оператор работы с наборами.
Что-то типа:
Код: plaintext
1.
2.
3.
var P : PChar;
...
While not (P^ in [# 0 , # 9 , # 10 , # 13 , ' ', '0..9', MyDelimitersSet]) do inc(P);

Недавно необходимость возникла портировать код на eVC...
пришлось для этого дела прописывать функцию с циклом...

Есть ли в С++ возможность не слишком громоздко сделать то же самое, но без описания дополнительного метода?

Заранее пасип. :)
Если я не ошибаюсь, то это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char *p;

p=MyDelimiterSet;//Указатель на исходную строку
...
while (NULL==strchr("\0\t\r\n 0123456789",p))
{
 p++;
}
...
Рейтинг: 0 / 0
Set operators
    #34025863
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. Makar4ikНа дельфи есть роскошный оператор работы с наборами.
Что-то типа:
Код: plaintext
1.
2.
3.
var P : PChar;
...
While not (P^ in [# 0 , # 9 , # 10 , # 13 , ' ', '0..9', MyDelimitersSet]) do inc(P);

Недавно необходимость возникла портировать код на eVC...
пришлось для этого дела прописывать функцию с циклом...

Есть ли в С++ возможность не слишком громоздко сделать то же самое, но без описания дополнительного метода?

Заранее пасип. :)
Если я не ошибаюсь, то это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char *p;

p=MyDelimiterSet;//Указатель на исходную строку
...
while (NULL==strchr("\0\t\r\n 0123456789",p))
{
 p++;
}

Естественно, что необходимо проверять за выход массива, либо каким-то другим способом гарантированть наличие "стоповых символов"
...
Рейтинг: 0 / 0
Set operators
    #34025958
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Makar4ikНа дельфи есть роскошный оператор работы с наборами.
Что-то типа:
Код: plaintext
1.
2.
3.
var P : PChar;
...
While not (P^ in [# 0 , # 9 , # 10 , # 13 , ' ', '0..9', MyDelimitersSet]) do inc(P);

Недавно необходимость возникла портировать код на eVC...
пришлось для этого дела прописывать функцию с циклом...

Есть ли в С++ возможность не слишком громоздко сделать то же самое, но без описания дополнительного метода?

Заранее пасип. :)

Готового средства для этого нет, хотя может быть что-нибудь в stl-е есть.

Мона ифом, мона свичем, а моно, для универсальности, значения в вектор загнать и отдельным методом пробегать по нему.
...
Рейтинг: 0 / 0
Set operators
    #34025964
Станислав C. Makar4ikНа дельфи есть роскошный оператор работы с наборами.
Что-то типа:
Код: plaintext
1.
2.
3.
var P : PChar;
...
While not (P^ in [# 0 , # 9 , # 10 , # 13 , ' ', '0..9', MyDelimitersSet]) do inc(P);

Недавно необходимость возникла портировать код на eVC...
пришлось для этого дела прописывать функцию с циклом...

Есть ли в С++ возможность не слишком громоздко сделать то же самое, но без описания дополнительного метода?

Заранее пасип. :)
Если я не ошибаюсь, то это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char *p;

p=MyDelimiterSet;//Указатель на исходную строку
...
while (NULL==strchr("\0\t\r\n 0123456789",p))
{
 p++;
}

К сожалению, ошибся :(
Правильно должно быть так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	char *p;
	char delim[]="\t\r\n 0123456789\0";
	char MyDelimiterSet[]="Hello World!\n";

    p=MyDelimiterSet;//Указатель на исходную строку

...
   while (strchr(delim,*p)==NULL)
   {
    p++;
   }
...
Рейтинг: 0 / 0
Set operators
    #34026011
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И так понятно, спасибо большое.
...
Рейтинг: 0 / 0
Set operators
    #34026029
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhМона ифом, мона свичем, а моно, для универсальности, значения в вектор загнать и отдельным методом пробегать по нему.
Так и пробегаю. Tолько strchr переписал на свой.
Дельфи же превращает это в весьма эффективный switch.
А ифом тоже неплохо, но очень громоздко.
Код читаться перестает.
...
Рейтинг: 0 / 0
Set operators
    #34026073
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Makar4ik AkhМона ифом, мона свичем, а моно, для универсальности, значения в вектор загнать и отдельным методом пробегать по нему.
Так и пробегаю. Tолько strchr переписал на свой.
Дельфи же превращает это в весьма эффективный switch.
А ифом тоже неплохо, но очень громоздко.
Код читаться перестает.

Чтобы лучше читался, можно в класс запаковать. Вообще, советую поковырять str, и если ничего не найдется, сделать наследника от vector<int>, которому добавть функцию определения наличия элемента в векторе. Положить это в отдельный файл, проинклудить и юзать его. Таким образом не будет мешаться лишняя функция, плюс инициализация будет привязана к отдельному классу. Все лишнее уберется.
...
Рейтинг: 0 / 0
Set operators
    #34026587
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhЧтобы лучше читался, можно в класс запаковать.
В данный момент я пишу для устройства, которое во-первых не сильнее 486-й, а во-вторых, от программы нужен почти realtime отклик...
Так что пишу без классов вообще.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Set operators
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]