C++ Вопрос Поиск символов в буфере

Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Как найти в буфере определённые символы?

C++:
static char buf[15];
 
smoking on that #pragma pack
Пользователь
Статус
Оффлайн
Регистрация
10 Янв 2018
Сообщения
324
Реакции[?]
96
Поинты[?]
1K
перебирать его на наличие определенных символов?
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
vk.com/ahkcsgocheat
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2020
Сообщения
380
Реакции[?]
64
Поинты[?]
2K
Это строка, ее размер 15 байт. Где сама строка, ты добавил просто ее определение.
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
7 Ноя 2019
Сообщения
146
Реакции[?]
44
Поинты[?]
0
говнокод но мне пох ваа ээ

C++:
#include <iostream> //std::cout

bool first_occurrence = true;  // если надо найти только первое упоминание

int main() {

    static char buf[15] = "aacdefghijklmn"; // 15 char

    for (int i = 0; i < 15; i++) {
        std::string s(1, buf[i]);

        if (s == "a") {
            std::cout << "Letter - " << buf[i] << " - found! Location: " << i << " Address: " << static_cast<void*>(&buf[i]) << std::endl;

            if (first_occurrence)
                break;
        }
    }
}

/*
**first_occurrence = true**
* output:
* Letter - a - found! Location: 0 Address: 00B70008
*
**first_occurrence = false**
* output:
* Letter - a - found! Location: 0 Address: 00090004
* Letter - a - found! Location: 1 Address: 00090005
*/
либо так..
C++:
#include <iostream> //std::cout

int main() {

    static char buf[15] = "aacdefghijklmn"; // 15 char
    const char* search[5] = { "a","c","d","f","g" };
    int index[5] = { 0, 0, 0, 0, 0 };

    for (int i = 0; i < 15; i++) {
        std::string s(1, buf[i]);

        for (int b = 0; b < 5; b++) {

            if (s == search[b]) {

                index[b]++;

                std::cout << "found: " << buf[i] << " [" << index[b] << "] | buffer idx: " << i << " | search char: " << search[b] << " | search idx: " << b << " | mem: " << static_cast<void*>(&buf[i]) << std::endl;
           
            }
        }
    }
}
 
Последнее редактирование:
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так что в ней будет и что найти нужно?
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
говнокод но мне пох ваа ээ

C++:
#include <iostream> //std::cout

bool first_occurrence = true;  // если надо найти только первое упоминание

int main() {

    static char buf[15] = "aacdefghijklmn"; // 15 char

    for (int i = 0; i < 15; i++) {
        std::string s(1, buf[i]);

        if (s == "a") {
            std::cout << "Letter - " << buf[i] << " - found! Location: " << i << " Address: " << static_cast<void*>(&buf[i]) << std::endl;

            if (first_occurrence)
                break;
        }
    }
}

/*
**first_occurrence = true**
* output:
* Letter - a - found! Location: 0 Address: 00B70008
*
**first_occurrence = false**
* output:
* Letter - a - found! Location: 0 Address: 00090004
* Letter - a - found! Location: 1 Address: 00090005
*/
либо так..
C++:
#include <iostream> //std::cout

int main() {

    static char buf[15] = "aacdefghijklmn"; // 15 char
    const char* search[5] = { "a","c","d","f","g" };
    int index[5] = { 0, 0, 0, 0, 0 };

    for (int i = 0; i < 15; i++) {
        std::string s(1, buf[i]);

        for (int b = 0; b < 5; b++) {

            if (s == search[b]) {

                index[b]++;

                std::cout << "found: " << buf[i] << " [" << index[b] << "] | buffer idx: " << i << " | search char: " << search[b] << " | search idx: " << b << " | mem: " << static_cast<void*>(&buf[i]) << std::endl;
          
            }
        }
    }
}
память выделяешь, не круто... то же самое но без выделения памяти
Код:
#include <iostream>

#define ARRAYSIZE( arr )  ( sizeof( arr ) / sizeof( *( arr ) ) )

int main( )
{
    char buf[ 15 ] = "aacdefghijklmn";
    char search_to[ ] = { 'a', 'c', 'd', 'f', 'g' };

    for ( auto i = 0; i < ARRAYSIZE( buf ); i++ )
    {
        for ( auto j = 0; j < ARRAYSIZE( search_to ); j++ )
        {
            if ( buf[ i ] == search_to[ j ] )
            {
                std::cout << "found " << buf[ i ] << " at " << i << " index, address: " << reinterpret_cast< void* >( &buf[ i ] ) << std::endl;
            }
        }
    }
}
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
upd: то что мне нужно можно реализовать при помощи sscanf
 
Последнее редактирование:
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Скорее всего неправильно проверяешь на вхождение в строке с помощь strstr.
Я уже это решил по средствам создания собственного флага.

Для тех кто использует имгуи:
1643892745380.png
C++:
if (flags & ImGuiInputTextFlags_Castom)
            if (!(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9'))
                return false;
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу