Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 14.08.2019
Сообщений: 275
1

Как создать массив и правильно работать с потоками?

14.08.2019, 20:27. Показов 1241. Ответов 9
Метки нет (Все метки)

Хей.

Как правильно создать массив со строками "test1", "test2", "test3" ( Гуглил, не смог понять, прошу пример )
Мне нужно проверить есть ли строка из GetClassNameA в массиве строк, как это осуществить?

Как правильно работать с потоками? Мне нужно создать поток из DLL с возможностью последующего контроля над ним
( Убивание потока в любой момент )
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2019, 20:27
Ответы с готовыми решениями:

Как правильно работать с потоками?
Есть richTextBox, в который записываются все действия, совершаемые программой. В процессе...

Как правильно работать с сокетами и потоками
Есть сервер и пара клиентов, которые к нему подключаются... Использую потоки, -каждый сокет в своем...

Как правильно работать с потоками в python?
Приветствую, немного пользовался потоками, но не хватает окончательного понимания как с ними...

Как правильно настроить сервер и создать БД, чтобы работать с кириллицей
Доброго времени суток. Уважаемые Гуру, подскажите новичку в работе с базами и mysql в частности. ...

9
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
14.08.2019, 20:35 2
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
Хей.
А что конкретно ты хочешь сделать?
0
2 / 2 / 0
Регистрация: 14.08.2019
Сообщений: 275
14.08.2019, 20:38  [ТС] 3
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А что конкретно ты хочешь сделать?
oleg-m1973, Я же уже написал что мне надо. c:
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
14.08.2019, 20:42 4
Лучший ответ Сообщение было отмечено eXpl01TeR как решение

Решение

Цитата Сообщение от eXpl01TeR Посмотреть сообщение
oleg-m1973, Я же уже написал что мне надо. c:
А, ну да.
Массив со строками - std::vector<std::string>, поиск в нём - std::find
Потокb - std::thread
1
2 / 2 / 0
Регистрация: 14.08.2019
Сообщений: 275
14.08.2019, 20:48  [ТС] 5
oleg-m1973, А можно пожалуйста пример создания массива при помощи вашего std::vector?
Мне было бы проще понять информацию на вашем примере. Я был бы очень вам благодарен. :3
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
14.08.2019, 20:51 6
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
oleg-m1973, А можно пожалуйста пример создания массива при помощи вашего std::vector?
Мне было бы проще понять информацию на вашем примере. Я был бы очень вам благодарен. :3
C++
1
2
3
4
5
6
7
std::vector<str::string> arr;
 
arr.emplace_back("12345");
arr.emplace_back("67890");
 
for(size_t i =0, n = arr.size(); i < n: ++i)
   std::cout << arr[i] << std::endl;
1
2 / 2 / 0
Регистрация: 14.08.2019
Сообщений: 275
15.08.2019, 00:00  [ТС] 7
oleg-m1973, Спасибо, вы великолепны.

Добавлено через 3 часа 4 минуты
oleg-m1973, Я пытаюсь сделать массив исходя из вашего совета и проверку есть ли элемент в массиве, но у меня что-то не получается.

C++
1
2
3
4
5
6
7
8
9
std::vector<std::string> AllowedClasses = {"test1", "test2", "test3"};
 
char ClassName[256];
GetClassNameA(hwnd, ClassName, 256);
 
if (std::find(std::begin(AllowedClasses), std::end(AllowedClasses), 1) != std::end(AllowedClasses))
{
 
}
Ошибка:
Ошибка C2678 бинарный "==": не найден оператор, принимающий левый операнд типа "std::basic_string<char,std::char_traits<char>,std::allocato r<char>>" (или приемлемое преобразование отсутствует)
0
nd2
3415 / 2795 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
15.08.2019, 00:34 8
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
C++
1
(std::find(std::begin(AllowedClasses), std::end(AllowedClasses), 1)
Что за 1? Там строка, которую ищешь, должна быть.
0
2 / 2 / 0
Регистрация: 14.08.2019
Сообщений: 275
15.08.2019, 00:36  [ТС] 9
nd2, Спасибо, вы мне помогли.
0
Комп_Оратор)
Эксперт по математике/физике
8719 / 4425 / 598
Регистрация: 04.12.2011
Сообщений: 13,256
Записей в блоге: 16
15.08.2019, 00:56 10
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
Мне нужно проверить есть ли строка из GetClassNameA в массиве строк
Если я верно понял (вряд ли), то:
C++
1
2
3
4
5
int GetClassNameA(
  HWND  hWnd,
  LPSTR lpClassName,
  int   nMaxCount
);
lpClassName это то, о чём вы говорите и оно имеет тип char* а по этому адресу лежит ANSI строка. Это значит, что втыкать в массив такие строки нужно конструируя строки:
C++
1
arr.emplace_back(lpClassName);
Где брать передаваемый в GetClassNameA параметр - вопрос риторический. Она возвращает целое. И права, по своему.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2019, 00:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как правильно создать проект на С++5.02, чтобы можно было работать с WIN API?
Помогите,пожалуйста, устранить ошибку при линковании: Unresolved external '_main' referenced...

Как работать с потоками?
Как создать поток? Как его стартануть? В какой он библиотеке? И вообще, как он называется? Когда...

Как работать с потоками?
нужно создать 3 асинхронно работающих потока что есть сейчас: using System; using System.IO;...

Как работать с битовыми потоками?
Стоит задача написать простейший архиватор по алгоритму Хаффмана. В общем-то, вся логика сделана,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.