HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2441  
Старый 25.02.2009, 14:54
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

Цитата:
Сообщение от rudvil  
Возможно ли в С++ динамически объявлять размер string массива.

не так как обычно:
Код:
string test[15];
так тоже не подходит:
Код:
#define size 15
string test[size];
,а вот так (у меня при этом вылезает ошибка)
Код:
int size = 15;
string test[size];
и тут такая же ошибка..
Код:
int size = 15;
#define len size
string test[len];
С меня +
Код:
int len=123;
string *c;
c = new string[len];
так попробуй
 
Ответить с цитированием

  #2442  
Старый 25.02.2009, 15:08
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 _nic после accept ты получишь дискриптор сокета типа ULONG и по этому как хочешь так и юзай его. можешь в массив записать, хоть куда пиши неважно.
Можно даже потоку передать при его запуске. Это всеголишь число а не структура
 
Ответить с цитированием

  #2443  
Старый 25.02.2009, 15:19
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от slesh  
2 _nic после accept ты получишь дискриптор сокета типа ULONG и по этому как хочешь так и юзай его. можешь в массив записать, хоть куда пиши неважно.
Можно даже потоку передать при его запуске. Это всеголишь число а не структура
Так с этими числа потом send,recv работать будут?
 
Ответить с цитированием

  #2444  
Старый 25.02.2009, 15:22
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

объявляеш указатель присваиваеш ему этот адрес и работаеш
 
Ответить с цитированием

  #2445  
Старый 25.02.2009, 15:25
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

да. в жестоком смысле дискриптор - это всеголишь 16/32 битное число соответствующее чему либо. ТОже и с файлами.
сам можешь поглядеть сделав вывод на экран этого числа.
Дискрипторы уникальны для каждого процесса, за исключением случаев наследования.
Так что получив дискриптор чего либо в своей проге, ты можешь сохранить его и юзать где у годно внутри проги.
 
Ответить с цитированием

  #2446  
Старый 25.02.2009, 15:28
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Ещё вопрос по контейнерам.Вот пример из википедии
http://ru.wikipedia.org/wiki/Ассоциативный_массив#.D0.91.D0. B8.D0.B1.D0.BB.D0.B8.D0.BE.D1.82.D0.B5.D0.BA.D0.B0 _STL_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B0_C.2B.2B
Но только вот борландский компилятор ругается на строчки
Код:
cout << (*ifind).first() << "'s phone is " << (*ifind).second << endl;
...............
cout << (*i).first() << "\t " << (*i).second << endl;
Цитата:
[C++ Error] Unit1.cpp(21): E2314 Call of nonfunction
В чем прикол?
 
Ответить с цитированием

  #2447  
Старый 25.02.2009, 15:53
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Цитата:
Сообщение от _nic  
Ещё вопрос по контейнерам.Вот пример из википедии
http://ru.wikipedia.org/wiki/Ассоциативный_массив#.D0.91.D0. B8.D0.B1.D0.BB.D0.B8.D0.BE.D1.82.D0.B5.D0.BA.D0.B0 _STL_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B0_C.2B.2B
Но только вот борландский компилятор ругается на строчки
Код:
cout << (*ifind).first() << "'s phone is " << (*ifind).second << endl;
...............
cout << (*i).first() << "\t " << (*i).second << endl;

В чем прикол?
разве в second не нужно дописывать скобки в конце как в first() ?
т.е.
Код:
(*i).second()
 
Ответить с цитированием

  #2448  
Старый 25.02.2009, 16:20
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от rudvil  
разве в second не нужно дописывать скобки в конце как в first() ?
т.е.
Код:
(*i).second()
Да какая разница всеравно пример некомпилируется все с той же ошибкой
 
Ответить с цитированием

  #2449  
Старый 25.02.2009, 17:16
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

Репутация: 15
По умолчанию

Цитата:
Сообщение от _nic  
Так с этими числа потом send,recv работать будут?
как я понимаю - да.
Кстати - очень удобное использовать для такой вещи двусвязные списки. Сам так использую.
 
Ответить с цитированием

  #2450  
Старый 25.02.2009, 18:09
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

Репутация: 15
По умолчанию

Вот вопросик.Сокеты.
Пытаюсь в целях учения написать чат( ну просто обмен сообщениями чтоб был).
Клиент как бы я сделал с select(); примерно такая конструкция:
Цитата:
s - сокет с которым работаю.
while(1)
{
FD_ZERO(&wfds);
FD_SET(s,&wfds);
maxfd = s;
int chars = 0;
selt = select(maxfd+1, NULL, &wfds, NULL, NULL);
std::cout<<"You say: ";
while((c = getchar()) != 10)
buff[chars++] = c;
buff[chars] = 10;
if(FD_ISSET(s,&wfds))
send(s,buff,chars,0)
if(FD_ISSET(s,&rfds)){
int wers;

while((wers = recv(s, static_cast<char *>(buff),sizeof(buff),0)) > 0){
std::cout<<"Server say: ";
for(int i = 0; i < wers; i++)
std::cout<<buff[i];
std::cout<<std::endl;
}

}

}
Вот тут как бы проблема вот в чем: если пользователь не вводит символы , то код сразу встает , в следствии сообщения не приходят. Как это обойти? я как бы не знаю алгоритма , вот у вас спрашиваю. Только потоки не предлагать(триды)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ