- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
// https://github.com/santiontanon/stransball2/blob/dff413c6ed236b4be23e0152557a26d7d902976c/sources/state_changepack.cpp#L67
bool state_changepack_cycle(SDL_Surface *screen,int sx,int sy,unsigned char *keyboard)
{
if (SUBSTATE==0) {
if (image!=0) SDL_FreeSurface(image);
image=IMG_Load("graphics/tittle.pcx");
{
levelpacks.Delete();
#ifdef _WIN32
/* Find files: */
WIN32_FIND_DATA finfo;
HANDLE h;
h=FindFirstFile("maps/*.lp",&finfo);
if (h!=INVALID_HANDLE_VALUE) {
char *tmp;
tmp=new char[strlen(finfo.cFileName)+1];
strcpy(tmp,finfo.cFileName);
levelpacks.Add(tmp);
while(FindNextFile(h,&finfo)==TRUE) {
char *tmp;
tmp=new char[strlen(finfo.cFileName)+1];
strcpy(tmp,finfo.cFileName);
levelpacks.Add(tmp);
} /* while */
} /* if */
#else
DIR *dp;
struct dirent *ep;
dp = opendir ("maps");
if (dp != NULL)
{
while (ep = readdir (dp))
{
char *tmp;
if (strlen(ep->d_name)>4 &&
ep->d_name[strlen(ep->d_name)-3]=='.' &&
ep->d_name[strlen(ep->d_name)-2]=='l' &&
ep->d_name[strlen(ep->d_name)-1]=='p') {
tmp=new char[strlen(ep->d_name)+1];
strcpy(tmp,ep->d_name);
levelpacks.Add(tmp);
} /* if */
}
(void) closedir (dp);
}
#endif
j123123 04.04.2022 22:01 # 0
j123123 04.04.2022 22:03 # 0
guest6 04.04.2022 22:05 # 0
guest6 04.04.2022 22:09 # 0
j123123 04.04.2022 22:12 # 0
А как это решали до "C++20" ?
guest6 04.04.2022 22:18 # +1
во-вторых есть substr
Грубо гря
j123123 04.04.2022 22:17 # 0
guest6 04.04.2022 22:22 # 0
stl, итераторы и шаблоны
j123123 04.04.2022 22:26 # 0
Какое-то нелогичное неконсистентное пизданатство
guest6 04.04.2022 22:32 # 0
Я не крестовик же, нужно Госта спросить, или Борманда.
Вангую, что строки Страуструп сделал раньше, чем Степанов свои коллекции
* кстати, анекдот на эту тему: ответить без гугла чем отличаются методы length() и size() у строки?
guest6 04.04.2022 22:49 # 0
https://stackoverflow.com/questions/11358879/benefits-of-vectorchar-over-string
упомянутая мною оптимизация это small string optimization
Остальное ридабилити
В общем С++ это такой странный мир, где зачем-то есть vector<bool>, а строки развиваются параллельно с контейнерами, но при этом это и не строки вовсе, а тоже контейнеры со спец типами типа чар (в смысле строки не понимают там всякие юникоды)
Ситуация напоминает как в жабе есть 100500 фреймворков для логирования, например
зы: блядь как пиздато опять пиздеть про С++, а не про войну
Soul_re@ver 05.04.2022 02:08 # +1
Ничем. Вообще ничем. Даже для wide и multibyte строк.
Steve_Brown 05.04.2022 12:07 # 0
Soul_re@ver 05.04.2022 12:21 # 0
С этим, кстати, связано ещё одно говно.
С появлением ranges, все алгоритмы переделали на их поддержку. Лежат эти новые алгоритмы в std::ranges::, а старые в std::.
Вся новая хуйня добавляется в std::ranges::, её аналог в std:: — нет. То есть, в большинстве случаев если ты напишешь std::huita вместо std::ranges::huita, всё будет работать. Но иногда нет. За 20 лет скопилось огромное количество материала, показывающего, как использовать говно из std::.
То есть, кто-нибудь, использующий учебники, написанные лет 5 назад, может хватить неиллюхорный диссонанс, когда в каких-то случаях всё работает, а в каких-то надо впихивать ranges в середину.
Задепрекетить все старые алгоритмы с сообщением «пользуйтесь новыми в ranges» не додумались.
guest6 05.04.2022 12:37 # 0
это у std::string? орлы?
Steve_Brown 05.04.2022 13:49 # 0
guest6 05.04.2022 14:17 # 0
курица не птица
болгария не заграница
std::string не строка
Soul_re@ver 05.04.2022 02:05 # 0
Тот же самый вопрос про strlen, да и про всю str* серию функций.
j123123 05.04.2022 09:33 # 0
guest6 05.04.2022 09:42 # 0
guest6 05.04.2022 09:40 # 0
guest6 04.04.2022 22:03 # 0
какой алогоритм Шлемеля зе пейнтера
>new
ого, это кресты
j123123 04.04.2022 22:05 # 0
guest6 04.04.2022 22:27 # 0
Он накопипастил куски кода из разных мест, или это он так "C++" знает?
Steve_Brown 05.04.2022 10:17 # 0
Хм...
j123123 05.04.2022 22:21 # 0
Хотя вот функция opendir() это из "POSIX", в винде такой хуйни вроде нет.
guest6 05.04.2022 22:40 # 0
nyTuH_nugop 06.04.2022 09:46 # 0
An application cannot create a directory by using CreateFile, therefore only the OPEN_EXISTING value is valid for dwCreationDisposition for this use case. To create a directory, the application must call CreateDirectory or CreateDirectoryEx.
To open a directory using CreateFile, specify the FILE_FLAG_BACKUP_SEMANTICS flag as part of dwFlagsAndAttributes. Appropriate security checks still apply when this flag is used without SE_BACKUP_NAME and SE_RESTORE_NAME privileges.
bormand 05.04.2022 23:11 # 0
guest6 05.04.2022 23:17 # 0
bormand 05.04.2022 23:18 # −1
guest6 05.04.2022 23:23 # 0
ISO 05.04.2022 23:24 # +1
guest6 05.04.2022 23:26 # +1
Вконтактники любят конечно писать
но Шлёму Зепейнтера они не заказывали
bormand 05.04.2022 23:28 # 0
guest6 05.04.2022 23:32 # 0
Ну возможно, но расчитывать не стоит
Вот кстати крестостроки же вроде свою длину считают один раз, так что они еще и этим лучше
guest6 05.04.2022 23:32 # 0
guest6 05.04.2022 23:34 # +1
В не очень хороших ВУЗах иногда учат си и сразу си++, и в голове образовывается такая вот кашица
bormand 05.04.2022 23:34 # 0
guest6 05.04.2022 23:37 # 0
j123123 16.04.2022 21:25 # 0
guest6 04.04.2022 22:29 # 0
guest6 04.04.2022 22:38 # 0
kcalbCube 04.04.2022 23:38 # 0