Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: veronica b
Дата сообщения: 20.01.2007 19:52
Qraizer

Цитата:
Но поговаривают, что в новом стндарте потоки появятся.

Вы имеете в виду что в новом стандарте языка С++ появятся потоки. Ведь потоки в.-в. есть в С++ с самого начала.

Автор: xdude
Дата сообщения: 20.01.2007 20:37
veronica b
Речь идет не о потоках ввода-вывода, а о нитях (они же и называются потоки, или threads на англ.). См. в предыдущих постах.

2 all
Нашел библиотеку pthreads-win32, аналог pthreads под *nix, в ней есть различные варианты сборки: с чисто C-шной обработкой ошибок (я так понял, коды ошибок возвращаются функциями), и с использованием механизма исключительных ситуаций С++ (exceptions). Кто-нибудь может подсказать, под *nix-ом какой механизм используется? Мне надо программу написать кросс-платформенную, чтоб потом под линуксом легко компилялась.
Автор: TeXpert
Дата сообщения: 20.01.2007 21:26
xdude

Цитата:
Мне надо программу написать кросс-платформенную, чтоб потом под линуксом легко компилялась

Я думаю, это не есть эффективный способ, если вы хотите на C/C++: там где используются особенности архитектуры ОС, нет универсального решения. Но можно попробовать Java.
Автор: xdude
Дата сообщения: 20.01.2007 22:03
TeXpert

Цитата:
Я думаю, это не есть эффективный способ,

Как раз-таки это и есть наиболее эффективный способ, Java очень сильно тормозит и жрет непомерно памяти, а тут нужна шустрая и маловесная утилита. До этого я таких прграммок написал кучу, правда, на C. Существует куча кросс-платформенных библиотек, и прогнраммыЮ написанные с их использованием, очень легко компилируются под любой системой, иногда с небольшими изменениями.
Просто теперь вот решил использовать объекно-ориентированный подход, то есть перейти с С на С++, вот и ищу пути наименьшего сопротивления.
Автор: Strelok92
Дата сообщения: 20.01.2007 23:24
Пацаны,я полный ламер в C++ но при запуске приложения HL2.exe выскакивает ошибка номер R6034:an application has made an attempt to load the C runtime library incorrectly.Народ,что с этим делать???Как исправить?Подскажите плиз!
Автор: rain87
Дата сообщения: 20.01.2007 23:42
Strelok92
ну ты юморист
-> http://forum.ru-board.com/topic.cgi?forum=51&bm=1&topic=4902#1
Автор: Strelok92
Дата сообщения: 21.01.2007 01:11
rain87
Я не юморист,эта ошибка связана именно с С++ я уже всё проверил!
Автор: xdude
Дата сообщения: 21.01.2007 01:28
Strelok92

Цитата:
Я не юморист,эта ошибка связана именно с С++ я уже всё проверил!


просто на лопатки

2all
Товарищи, а есть в STL какой-то класс для работы с каталогами? Т.е., например, который бы мог перечислить все файлы в каталоге? Или хотя-бы в библиотеке С может что-то подобное есть? Или это опять API, и под виндой надо юзать FindFirst/FindNext, а под *никсом - opendir/readdir?
Автор: TeXpert
Дата сообщения: 21.01.2007 01:41
xdude

Цитата:
Как раз-таки это и есть наиболее эффективный способ

Эффективный я имел в виду с точки зрения производительности, но не кодирования. Универсальная вещь лучшим не бывает, как правило, с точки зрения функциональности.
Автор: xdude
Дата сообщения: 21.01.2007 02:34
TeXpert

Цитата:
Эффективный я имел в виду с точки зрения производительности

Именно о производительности я и говорю. Неужели программа, написанная на Java может быть более производительной, чем её аналог на C++? Нонсенс.

Добавлено:

Цитата:
Универсальная вещь лучшим не бывает

Кросс-платформенность и универсальность разные вещи, как мне кажется.
Автор: WiseAlex
Дата сообщения: 21.01.2007 11:45
xdude

Цитата:
Товарищи, а есть в STL какой-то класс для работы с каталогами?

и потоки - есть в boost
Автор: blackdevil
Дата сообщения: 21.01.2007 13:08
Привет всем!Подскажите пож-та,я вот пишу компрессор файлов,у меня функция main принимает аргумент-имя сжимаемого файла.Как мне отладить программу?по-моему как-то надо запустить из командной строки с ключом debug...подскажите плиз!!!
Пример:
int main (int argc,char *argv[])
{
...
}

cmd> comressor.exe 1.txt

debug???
Автор: veronica b
Дата сообщения: 21.01.2007 13:21
blackdevil
Я бы сделал так
cmd> comressor.exe 1.txt - это обычный запуск
cmd> comressor.exe 1.txt debug - это запуск для отладки
теперь определи перменную
int debug = 0; // 0 - no debug
........
if(argc == 3)
debug = 1;
......
Когда debug равен единицы, делай все, что надо для отладки.
Автор: blackdevil
Дата сообщения: 21.01.2007 13:53

Цитата:
Когда debug равен единицы, делай все, что надо для отладки.


Так а как это сделать-то?Просто например если main (в visual studio 2005) не имеет аргументов,то для отладки надо просто нажать F10 а вот если мой аргумент-это файл 1.txt,то мне отладку нельзя по F10 запускать т.к. 1.txt мейну не передается.Нужен какой-то ключ в командной строке чтобы прога сразу запустилась в отладчике с аргументом 1.txt ...а какой я не знаю...Вопрос:что написать в командной строке чтобы запустилась моя прога в отладчике с аргументом 1.txt ?
ты уж извини если я по ламмерски не понял просто только начинаю язык изучать
Автор: EZH
Дата сообщения: 21.01.2007 14:12
blackdevil
В свойствах проекта Debug > Start options > Command line arguments
Там и напиши 1.txt, а в начале функции main поставь точку останова и жми F5
Автор: blackdevil
Дата сообщения: 21.01.2007 14:44
чего-то не прокатывает этот способ...видимо из-за функции которая перед мейн находится...Привожу вам код того что у меня пока на данный момент есть:
# include <stdio.h>
# include <stdlib.h>

int counting_symbols (char *argv[])
{    
    int N,symbol;
    FILE *ofile;
    ofile = fopen(argv[1],"rb");
    for (N=0;(symbol=fgetc(ofile))!=EOF;N++)
        ;
    fclose(ofile);
    return N;
}

int main (int argc,char *argv[])
{
    // ANALYSING BLOCK
    int N;
    N=counting_symbols (argv);
    int *val=(int*)malloc(N*sizeof(int));
// that's all for now
    return 0;
}

Программу пишу на Си.Заодно поругайте меня пож-та если есть за что!Не могу я ее никак в отладке запустить с аргументом 1.txt (((
Автор: Qraizer
Дата сообщения: 21.01.2007 15:17
xdude
STL-ную библиотеку ввода/вывода поругивали за малую инкапсуляцию всего того, что обычно предоставляют операционные системы. Например, классы из <fstream> не позволяют задавать дополнительные параметры, связанные с безопасностью или разграничением доступа, слабо отражены возможности прямого доступа с чередующимися операциями чтения/записи итп. В частности, нет ничего для работы с более ёмкими единицами, чем файл - каталогами, томами. Впрочем, эта библиотека была просто перенесена на шаблоны и в связи с этим слегка перепроектирована. Изначально её архитекура как была придумана и представлена AT&T ещё в 1987 (если не ошибаюсь, давно, короче) году, так и не менялась. Единственное серьёзное новшество, которое было внесено в архитектуру STL-ем - это локали с их фасетами.
Я думаю, новый стандарт, не оставит без внимания эти недостатки. Тем более, что в boost-е есть такая штука, как filesystem. В частности, там есть класс path и итератор directory_iterator.
Автор: Strelok92
Дата сообщения: 21.01.2007 15:39
Ё - моё,послушайте,харе ржать в конце концов!!!Я понятия не имею об этой программе и о программировании на ней,мне просто нужно чтобы кто - нибудь сказал как это исправить!!!!
Автор: SaDFromSpb
Дата сообщения: 21.01.2007 15:44
Strelok92

Цитата:
Ё - моё,послушайте,харе ржать в конце концов!!!Я понятия не имею об этой программе и о программировании на ней,мне просто нужно чтобы кто - нибудь сказал как это исправить!!!!
Купи лицензию! И не мешай людям на философские темы глагольствовать!
Автор: Strelok92
Дата сообщения: 21.01.2007 15:56
SaDFromSpb
Блин в том - то и дело что это лицензия!!!!Народ,скажите что может вызвать такую ошибку,вы ж такие умные!!!Тока обще понятным языком.Нормально прошу!
Автор: blackdevil
Дата сообщения: 21.01.2007 16:21
Тебе не в этот форум.Тут програмиисты собрались.Они коды программ разбирают и о языке программирования рассуждают.Откуда им знать почему твоя игрушка вылетает???И изменить ты тут ничего не сможешь.Переставь игрушку или операционку на худой конец...тут к сожалению тебе не смогут помочь.
Автор: Strelok92
Дата сообщения: 21.01.2007 16:23
Ну хорошо,господа программисты,скажите пожалуйста чем вызвана такая ошибка.Вы же должны это знать!
Автор: rain87
Дата сообщения: 21.01.2007 16:54
Strelok92
выдам 1083й дежурный ответ суппорта:
При бета-тестировании никаких проблем обнаружено не было. Налицо аппаратная несовместимость
Доволен?
а если хочешь чего-нибуь
Цитата:
Тока обще понятным языком
то иди в ту тему, которую я указал, ищи, спрашивай, етс
Автор: xdude
Дата сообщения: 21.01.2007 17:00
Strelok92

Цитата:
Ё - моё,послушайте,харе ржать в конце концов!!!

да как тут не ржать-то, если ты с такой уверенностью заявляешь, что уже во всем разобрался и дело действительно в С++. и в то ж время говоришь, что в С++ и программировании ты не шаришь. Тебе самому-то не смешно? Причем тут вообще С++ к уже готовому написанному кем-то приложению, если у тебя исходных кодов оного нет и быть не может? Или ты собрался его декомпилировать/дизассемблировать, и полазить по исходным кодам (причем уже на ассемблере) и найти и устранить ошибку? Тогда тебе в ветку по ассемблеру и диззассемблерам
А если серьезно - SaDFromSpb правильно сказал

Цитата:
Купи лицензию! И не мешай людям на философские темы глагольствовать!


Qraizer
WiseAlex
Спасибо, с бустом до этого сталкиваться не приходилось. Сейчас глянул на сайт буст.орг - там какие-то заморочки с лицензией, которых у них 2: одна для персонального использования, бесплатная, а другая для коммерческого - платная. А для персонального это как, кто-нибудь может объяснить? Это для тех людей, которые балуются программированием и пишут чисто для себя всякие кросс-платформенные утилитки (хотел бы я на таких посмотреть)? А если я пишу продукт под заказ - то это уже коммерческую покупать надо?
Автор: Strelok92
Дата сообщения: 21.01.2007 17:21
xdude
Я говорю что разобрался что дело в С++ потому что я отформотировал хард где игруля сидела,переустановил и та же хня.Ну а в чём ещё
Автор: xdude
Дата сообщения: 21.01.2007 17:46
Strelok92

Цитата:
отформотировал хард где игруля сидела,переустановил и та же хня

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

Цитата:
Ну а в чём ещё

Блин, да ты не в тот топик пишешь! Ну раз ты такой настойчивый - скажу: либо в драйверах дело, либо в системе, либо в самой игре. Попробуй переустановить винду, поставить последние версии дров и DirectX, потом игрулину установить. Если не поможет - выкидывай свои диски с игрой и покупай другую версию.
Автор: Strelok92
Дата сообщения: 21.01.2007 17:55
xdude
Спасибо,сразу бы так!
Автор: xdude
Дата сообщения: 21.01.2007 20:53
Товарищи, у меня такой вопрос по STL:
Есть некий буффер, скажем char buf[512];
В этот буфер я получаю строку из сокета (протокол POP3, хотя это и не важно), причем строка определенного формата.
Далее мне эту строку надо пропарсить. Например. строка может быть такая:
+OK 234 12 bla-bla-bla bla-bla bla
Мне нужно разбить ее на части, чтобы получилось 3 строки: "+OK", "234", "12" и "bla-bla-bla bla-bla bla".
Для этого я хочу использовать istringstream is(buf). Получается что-то типа того:

Код:
char buf[512];
int len=recv(sock,buf,sizeof(buf),0);
buf[len]='\0';
istringstream is(buf);
string status; // будет содержать "+OK"
int num1; // будет содержать 234
int num2; // будет содержать 12
string rest; // будет содержать "bla-bla-bla bla-bla bla"
is >> status >> num1 >> num2;
getline(is,rest);
Автор: xdude
Дата сообщения: 21.01.2007 23:31
И еще один вопросик назрел: чем отличаются map и hash_map, и почему hash_map не соответствует стандарту ISO и перенесен в пространство имен stdext?

Добавлено:
О, и в чем еще отличие list от vector, и что в каком случае предпочтительней использовать?

Добавлено:

Цитата:
в чем еще отличие list от vector

Уже нашёл а вот предыдущие вопросы в силе.
Автор: WiseAlex
Дата сообщения: 22.01.2007 10:56
xdude

Цитата:
там какие-то заморочки с лицензией,

http://boost.org/LICENSE_1_0.txt - и какие здесь заморочки?
Насколько я помню в boost есть только платная поддержка каких-то третьих фирм все остальное бесплатно

Цитата:
Далее мне эту строку надо пропарсить. Например. строка может быть такая:
+OK 234 12 bla-bla-bla bla-bla bla

если тебе критична производительность, то stringstream лучше вообще не использовать - есть печальный опыт.
можно использовать стандартную библиотеку С - strtok например

Цитата:
чем отличаются map и hash_map, и почему hash_map не соответствует стандарту ISO

в hash_map ключ хэшируется, что удобно если ключ строка или что-то в этом духе
по стандарту у страуструпа написано. Когда принимали стандарт по hash_map договориться не смогли и чтобы не тянуть время с принятием стандарта hash_map в стандарт не включили

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.