powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа
25 сообщений из 98, страница 3 из 4
Сравнить два символа
    #33965225
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedА БОГ у нас един - зовется Бьерн Страуструп. И подьзлвать он велит std::string
см выше
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965246
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
вопрзьБОГ? Мужики, раз уж говорить о Боге, то вы забыли заповеди, а одна из них гласит "Не сотвори себе кумира ..." Так что юзаем и char и AnsiString.))))

ansistring использует то же + вызов процедуры (даже более 1 процедуры), если борланг не используется VM (чтоврядли)

2)
есть стандарт ANSI си по кторому вас из биледра не поймут, да и переходить с чистым си на скажем VC (или GNU C) проще (хотя вы врядли это сделаете)

3)
язык си близок к асму + платформенная независимость (если руки не кривые)
а вы привязываете его к борланду
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965295
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёёёёёё!
Страшно подумать - каким было бы обсуждение, если бы нужно было сравнить один символ.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965349
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик разволился на две части - выбор бога сей и самый супер-пупер алгоритм разделения строки.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965468
фывафыв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklin Akh сикока
В билдере AnsiString чуть ли не базовый класс:) его сам бог велел использовать,

А хто есть бог в С/С++?
си - деннис ритчи и брайна керниган
сипп - бьярн страуструп
ни там ни там нет вышеприведенных конструкция билдера

AnsiString это не конструкция, а обычный класс Ц++

ну и что, что его не было в оригинале.
это очень удобный класс, который активнейшем образом на каждом шагу используется в билдере, не использовать его из за того, что его нет в оригинале, извините.
кажется, в оригинале и __finally нет.
но собственно, уже все решили, кому как удобнее, тот так и делает.

а про бога было сказано в переносном смысле:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965481
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш алгоритм, приведенный выше, на супер-пупер не тянет. Скорее всего супер-пупер с точки зрения скорости - на CRT (strchr). Супер-пупер по скорости написания - с использованием string
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
//CRT
char *IO="Супер Сишник";
char *I;
char *O;
char *tmp;

if ( (tmp = strchr(IO,' ') !+ NULL){
     *tmp = '\0';
     I = strdup(IO);
     O = strdup(++tmp);
}

//stl
string IO("Супер Плюсник"), I, O;
int pos;
if ( (pos = IO.find(' ')) !=- 1 ){
     I.assign(IO.begin(),IO.begin+pos);
     O.aasign(IO.begin()+pos+ 1 ,IO.end());    
}
Какой лучше я не знаю, думаю - второй - поскольку в первом случае придётся освобождать память у I и O
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965542
фвыаыфф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ул. Бардина д 4
Проходная интстиуту машиноведения.
с 10:00 до 18:00 рабочие дни.



Aklin1)
вопрзьБОГ? Мужики, раз уж говорить о Боге, то вы забыли заповеди, а одна из них гласит "Не сотвори себе кумира ..." Так что юзаем и char и AnsiString.))))

ansistring использует то же + вызов процедуры (даже более 1 процедуры), если борланг не используется VM (чтоврядли)

2)
есть стандарт ANSI си по кторому вас из биледра не поймут, да и переходить с чистым си на скажем VC (или GNU C) проще (хотя вы врядли это сделаете)

3)
язык си близок к асму + платформенная независимость (если руки не кривые)
а вы привязываете его к борланду

1. Да, ансистринг скорее всего это не самый оптимальный подход в плане скорости, но я думаю, авторы оптимизировали там все на сколько это возможно. Но как часто нужна эта скорость?
2. Если идет работа на билдере, то это твой инструмент и нужно использовать все его возможности и функции по максимуму, его досконально изучать. А переход из компилятора в компилятор в случае написания реальных программ, это скорее исключение. Любая программа с использованием ВЦЛ по умолчанию привязана к Борланду, хоть ты тресни, бесполезно стараться делать универсальный код.
Обычно специалисты используют один инструмент долго, изучают его и т.п. Оглядываться на призрачные ВЦ и ГЦЦ нужно, но не за счёт текущей работы.
3. кроссплатформенность
без комментов:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965550
фвыаыфф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
фвыаыффул. Бардина д 4
Проходная интстиуту машиноведения.
с 10:00 до 18:00 рабочие дни.


к теме отношения не имеет, вставилось случайно:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965560
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фвыаыффк теме отношения не имеет, вставилось случайно:)зато теперь все знают ....
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965565
сикока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я выхожу из этой дискуссии:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965585
Встряну в вашу дисскуссию со своим вопросом (если можно?)
Пытаюсь встроить самописную функцию. В ***.h пишу
Код: plaintext
1.
private:
        void Error();

а в ***.cpp
Код: plaintext
1.
2.
3.
4.
void Error()
{
        BeepSound( 500 , 1000 );
}
И ВЫЗЫВАЮ
Код: plaintext
1.
2.
3.
void __fastcall TfrmMain::Button11Click(TObject *Sender)
{
    Error();
}
ВЫДАЕТ ОШИБКУ

Код: plaintext
[Linker Error] Unresolved external 'TfrmMain::Error()' referenced from D:\ПРОЕКТЫ\MAPPING SOCCARD\ 1 \UNTMAIN.OBJ

Что надо сделать, чтобы заработала?
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965656
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полный чайничекЧто надо сделать, чтобы заработала?
после подробнейшего и всестороннейшего изучения документации, то бишь языка С++, добавить TfrmMain:: в нужном месте
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сравнить два символа
    #33965788
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фвыаыфф
1. Да, ансистринг скорее всего это не самый оптимальный подход в плане скорости, но я думаю, авторы оптимизировали там все на сколько это возможно. Но как часто нужна эта скорость?
2. Если идет работа на билдере, то это твой инструмент и нужно использовать все его возможности и функции по максимуму, его досконально изучать. А переход из компилятора в компилятор в случае написания реальных программ, это скорее исключение. Любая программа с использованием ВЦЛ по умолчанию привязана к Борланду, хоть ты тресни, бесполезно стараться делать универсальный код.
Обычно специалисты используют один инструмент долго, изучают его и т.п. Оглядываться на призрачные ВЦ и ГЦЦ нужно, но не за счёт текущей работы.
3. кроссплатформенность
без комментов:)

1. Сомниваюсь, что панически.
2. Не стоит привязываться именно к компилятору. Считаю, что привязываться надо в первую очередь к языку. Использование разных компиляторов - не такая уж редкая речь. Зачастую в одном проекте у меня используется MSVC и gcc. Правда это разные программы, но все же. Например часто не мешала бы кроссплатформенность.
3. AnsiString более кроссплатфомрен? Ну, уж извените.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966036
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полный чайничекВстряну в вашу дисскуссию со своим вопросом (если можно?)
Пытаюсь встроить самописную функцию. В ***.h пишу
Код: plaintext
1.
2.
private:

        void Error();

а в ***.cpp
Код: plaintext
1.
2.
3.
4.
void Error()
{
        BeepSound( 500 , 1000 );
}
И ВЫЗЫВАЮ
Код: plaintext
1.
2.
3.
void __fastcall TfrmMain::Button11Click(TObject *Sender)
{
    Error();
}


Код: plaintext
1.
private:
        void Error();

а в ***.cpp
Код: plaintext
1.
2.
3.
4.
void <объекть класса>::Error()
{
        BeepSound( 500 , 1000 );
}
И ВЫЗЫВАЮ
Код: plaintext
1.
2.
3.
void __fastcall TfrmMain::Button11Click(TObject *Sender)
{
    <объекть класса>.Error();
}
?
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966049
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторAnsiString это не конструкция, а обычный класс Ц++

ну и что, что его не было в оригинале.
это очень удобный класс, который активнейшем образом на каждом шагу используется в билдере, не использовать его из за того, что его нет в оригинале, извините.
кажется, в оригинале и __finally нет.
но собственно, уже все решили, кому как удобнее, тот так и делает.

а про бога было сказано в переносном смысле:)

1)
то что класс си - ни о чем не говорит
щас классов си много , если не много*много*...*много} очень много раз

2)
оригинал он есть оригинал и большая часть стандартов = оригинал

3)
__fastcall по-моему есть только в билдере

4)
скорость
еслиб базы данных писали без скорости, то все бы повесились.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966241
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
char *IO="Супер Сишник", *I,*O;
if ( (O = strchr(IO,' ')) != NULL) *O++ = '\0';
I=IO;
а зачем был нужен strdup?
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966270
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и поправочка на юник
Код: plaintext
1.
2.
_TCHAR *IO=_TEXT("Супер Сишник"), *I,*O;
if ( (O = _tcschr(IO,_TEXT(' '))) != NULL) *O++ =  0 ;
I=IO;
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966510
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у Бога лучше
std::string s0 = "Bjarne Stroustrup";
std::string s1 = s0.substr(0, s0.find(' '));
std::string s2 = s0.substr(s0.rfind(' ') + 1);
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966654
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blindedА у Бога лучше
std::string s0 = "Bjarne Stroustrup";
std::string s1 = s0.substr(0, s0.find(' '));
std::string s2 = s0.substr(s0.rfind(' ') + 1);
А если пробела нет?
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966663
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoну и поправочка на юник
Код: plaintext
1.
2.
_TCHAR *IO=_TEXT("Супер Сишник"), *I,*O;
if ( (O = _tcschr(IO,_TEXT(' '))) != NULL) *O++ =  0 ;
I=IO;

У автора всё раскладывалось в две переменные. Отсюда strdup.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966664
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин! Нельзя редактировать - в две разные переменные. Ну и не лучший стиль - портить буфер, точнее - он не всегда безопасен. А так - вполне элегантно у вас, разве что и I не нужно.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966737
эстет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoну и поправочка на юник
Код: plaintext
1.
2.
_TCHAR *IO=_TEXT("Супер Сишник"), *I,*O;
if ( (O = _tcschr(IO,_TEXT(' '))) != NULL) *O++ =  0 ;
I=IO;


какой ужас!
это называется напиши так, что бы смотрелось как можно мерзопакостнее. только *** юниксоид мог зафигачить такой текст и еще использовать имя переменной "О".
...
Рейтинг: 0 / 0
Сравнить два символа
    #33966786
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эстетчто бы смотрелось как можно мерзопакостнеевсё нормально видно и понятно
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сравнить два символа
    #33967011
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded... Бога ... "Bjarne Stroustrup"; ....

Это только твое мнение.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33967569
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh blinded... Бога ... "Bjarne Stroustrup"; ....

Это только твое мнение.
Хорошо, я буду называть его Создатель, или и это будем опровергать?
nikname blindedА у Бога лучше
std::string s0 = "Bjarne Stroustrup";
std::string s1 = s0.substr(0, s0.find(' '));
std::string s2 = s0.substr(s0.rfind(' ') + 1);
А если пробела нет?
А как надо?
в этой интертрепации s1 == s0 && s2 == s0
ежели надо чтобы s1 == s0 && s2 == ""
std::string s1 = s0.substr(0, s0.find(' '));
std::string s2 = s0.rfind(' ') == std::string::npos ? "" : s0.substr(s0.rfind(' ') + 1);

ежели надо чтобы s1 == "" && s2 == s0
std::string s1 = s0.find(' ') == std::string::npos ? "" : s0.substr(0, s0.find(' '));
std::string s2 = s0.substr(s0.rfind(' ') + 1);
обе пустые?
std::string s1 = s0.find(' ') == std::string::npos ? "" : s0.substr(0,
s0.find(' '));
std::string s2 = s0.rfind(' ') == std::string::npos ? "" : s0.substr(s0.rfind(' ') + 1);
...
Рейтинг: 0 / 0
25 сообщений из 98, страница 3 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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