Kant #141 17 июля 2015 http://stackoverflow.com/questions/236129/split-a-string-in-c вот там второй ответ по идее самый норм.Первый как я понял годится только для пробелов Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Tinplz #142 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++.... http://stackoverflow...t-a-string-in-c вот там второй ответ по идее самый норм.Первый как я понял годится только для пробеловДа, я всегда 2й юзаю Поделиться сообщением Ссылка на сообщение
P0JIT0H #143 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.мне интересно почему функция не работает когда передаёшь константу? Поделиться сообщением Ссылка на сообщение
Matgen #144 17 июля 2015 (изменено) Хера там задр на итераторах пишет, я так понимаю копи(строка,индекс1,индекс2) для школьников?лан ща с итераторами поглубже разберусь, спасибоА не, я даун походу. Я так понимаю версия для меня это где парень гетлайном зачем то читает? Я с телефона просто, и хуево ориентируюсь Изменено 17 июля 2015 пользователем Matgen Тень огня четвертого поколения Поделиться сообщением Ссылка на сообщение
P0JIT0H #145 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++....Мне просто посоветовали прочитать эту книгу перед нормальным изучением c++ Поделиться сообщением Ссылка на сообщение
Kant #146 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.мне интересно почему функция не работает когда передаёшь константу?там варнинг вылетает, что запрещена неявная конвертация из строкового литерала в char*. И правильно, что запрещена, еще захочешь поменять и наступит где-нибудь пиздец. Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Tinplz #147 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++....Мне просто посоветовали прочитать эту книгу перед нормальным изучением c++посоветую не читать эту книгу.посоветую если и читать, то последнюю страуструпа и майерса дальше. потом тематические. Поделиться сообщением Ссылка на сообщение
Akimosik #148 17 июля 2015 Подскажите книги\уроки по html+php. Офк в инете куча материала, но хотелось бы услышать может кому какие понравились и т.д. Поделиться сообщением Ссылка на сообщение
P0JIT0H #149 17 июля 2015 (изменено) http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++....Мне просто посоветовали прочитать эту книгу перед нормальным изучением c++посоветую не читать эту книгу.посоветую если и читать, то последнюю страуструпа и майерса дальше. потом тематические. Почему не читать, она устревшая или что? Просто на многих форумах приводится в пример как одна из лучших, ну и хотелось бы книга которая закрыла бы пробелы в теории. Изменено 17 июля 2015 пользователем P0JIT0H Поделиться сообщением Ссылка на сообщение
Tinplz #150 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++....Мне просто посоветовали прочитать эту книгу перед нормальным изучением c++посоветую не читать эту книгу.посоветую если и читать, то последнюю страуструпа и майерса дальше. потом тематические. Почему не читать, она устревшая или что? Просто на многих форумах приводится в пример как одна из лучших, ну и хотелось бы книга которая закрыла бы пробелы в теории.1. Нормальные программисты не сидят на русских форумах.2. Программисты редко сидят на форумах, на которых заведено советовать книжки Поделиться сообщением Ссылка на сообщение
P0JIT0H #151 17 июля 2015 http://cpp.sh/3ej74 и бтв я же правильно понимаю что при s[j]='\0' память же всё равно останется выделена под ненужные символы, из оригинальной строки идущие после j так а зачем ты заново константу передаешь в метод, после того, как уже инициализировал ей же массив?http://cpp.sh/8cdcтот сайт вообще борзый и даже код с просто варнингами не дает исполнять. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.Зачем люди учат С, если есть красивый С++? даже самые убитые ембедед поддерживают некоторый сабсет с++....Мне просто посоветовали прочитать эту книгу перед нормальным изучением c++посоветую не читать эту книгу.посоветую если и читать, то последнюю страуструпа и майерса дальше. потом тематические. Почему не читать, она устревшая или что? Просто на многих форумах приводится в пример как одна из лучших, ну и хотелось бы книга которая закрыла бы пробелы в теории.1. Нормальные программисты не сидят на русских форумах.2. Программисты редко сидят на форумах, на которых заведено советовать книжкиЯ далеко ещё не норм программист, поэтому и прошу посоветовать тру книгу. Поделиться сообщением Ссылка на сообщение
jsfwa #152 17 июля 2015 Я далеко ещё не норм программист, поэтому и прошу посоветовать тру книгу.Рихтера winapi почитай Поделиться сообщением Ссылка на сообщение
Matgen #153 17 июля 2015 C++ Programming language 4th editionНа русский вроде еще не перевели. Вообще охуенная книга, сначала дается в общих чертах, потом дохуя конкретики. Если совсем дцп то у Страуструпа еще что- то есть там полайтовее, но я открыл и там много в принципе о программировании (для совсем не але парней) но я так понял с++ это вообще пизда поэтому многое гуглить надо и офк уметь отличать дцп С от плюсов, а то пиздец сколько задач пишут именно на си Тень огня четвертого поколения Поделиться сообщением Ссылка на сообщение
Tinplz #154 17 июля 2015 C++ Programming language 4th editionНа русский вроде еще не перевели. Вообще охуенная книга, сначала дается в общих чертах, потом дохуя конкретики. Если совсем дцп то у Страуструпа еще что- то есть там полайтовее, но я открыл и там много в принципе о программировании (для совсем не але парней) но я так понял с++ это вообще пизда поэтому многое гуглить надо и офк уметь отличать дцп С от плюсов, а то пиздец сколько задач пишут именно на сиЯ ему и написал страуструпа последнего. это и есть эта книга Поделиться сообщением Ссылка на сообщение
Matgen #155 17 июля 2015 Ну я так понял она по стл найс тоже. Я прежде чем про сплит спросить туда слазил нашел там сплит по пробелу, а по символам не было. Я так понял если в книге нету, то самому писать Тень огня четвертого поколения Поделиться сообщением Ссылка на сообщение
.felix #156 17 июля 2015 (изменено) почему эта функция - взята из книги Кернигана Ритчи - отказывается работатьhttp://cpp.sh/4r67 nietпочему то же самое но с squeeze("qweerty", 'q'); Отказывается работать, я понимаю что в ориганале это массив char, а я передаю строку, но в чём конкретно ошибка?В том что ты передаешь не массив str, а строковую константу. Они хранятся в какой-то отдельной памяти, я уж не помню но не суть. Ее нельзя передавать в функцию, т.к. это константа, а функция ее собирается изменять. Ты мог бы написатьvoid squeeze(const char s[], char c){ ...Тогда бы все заработало, но опять же компилятор тебе не даст этого сделать, так как в функции написано s[j++]=... Т.е. ты собираешься наебать компилятор, обьявив строку s константой, а потом втихую ее изменить. По поводу Кернигана, я ее прочитал, но она рли сложная для тех кто ни разу не сталкивался с С, просто невозможно за 200 страниц рассказать о том как устроен этот язык. Хотя примеры там интересные, но потом пойдет пиздец, всякие синтаксические анализаторы по методу рекурсивного спуска. Кароч я после нее еще одну книжку по С прочитал на 800 страниц, вот тогда я уже более менее норм начал шарить. А вообще если тебе нужен С++ то рли наверно стоит с него и начать. Мне прост он не нужен. да, правильно понимаешь, память никто не чистит. Просто функции вывода смотрят на \0 и дальше ничего не выводят.Если хочешь и обрезать лишнее в памяти, можешь сделать что-то типа char* newStr = strdup(str);free(str);Он должен сделать копию старой строку только по \0 и следовательно не копировать всё лишнее Но тебе это не надо как минимум потому, что ты вообще не выделяешь память на куче. Освобождать то и нечего.free работает только с той памятью, которая была выделена malloc'ом, т.е. с динамической. strdup вроде где то внутри использует malloc, поэтому free(newStr) сработает, а free(str) естественно нет, так как это статическая память. Изменено 17 июля 2015 пользователем .felix Поделиться сообщением Ссылка на сообщение
Kant #157 17 июля 2015 ну так я и написал, что ему нечего удалять то Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Just.Doit #158 17 июля 2015 (изменено) подскажите регулярное выражение для неразрывной (ничем, тоесть цифры подряд идут без каких либо других знаков) последовательности цифр в строке. последовательность максимальной длинны, в смысле например "12345" - здесь есть последовательность "1", "12", "123" и тд. а нужна именно максимальная "12345"типа есть строка "as asdfusdsplfosd asopd aspo d8712348971987489174897 ijuf 98 33333"надо рег выр которое найдет (будет соответствовать) этим и только этим подстркам "8712348971987489174897" "98" "33333"вообще в джаве (хотя вроде рег выр одинаковые везде). если что там цифра обозначается \d, а НЕ цифра \Dчто-то типа (\D любое количество (от 0 до бесконечности)) (\d любое количество(от 1 до бесконечности)) (\D любое количество (от0 до беск)) Изменено 17 июля 2015 пользователем Just.Doit очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Поделиться сообщением Ссылка на сообщение
Kant #159 17 июля 2015 [^\d]*(\d+)[^\d]*? а, если действует \D, то \D*\d+\D* дочитал наконец твой пост до конца ты же сам и составил регулярку, в чем вопрос? Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
jsfwa #160 17 июля 2015 String str = "as asdfusdsplfosd asopd aspo d8712348971987489174897 ijuf 98 33333"; ArrayList<String> arrayList = new ArrayList<String>(); Matcher match = Pattern.compile("[0-9]+").matcher(str); while (match.find()) arrayList.add(match.group()); или проще String[] strings = "as asdfusdsplfosd asopd aspo d8712348971987489174897 ijuf 98 33333".split("[^0-9]+"); Но по факту ты же сам спросил - сам ответил. Поделиться сообщением Ссылка на сообщение