Другое > Hard'n'Soft
Програмирование на C++
<< < (25/25)
Heidr:

--- Цитата: cviten от 17 Июль 2014, 20:15:26 ---Heidr, , легче использовать

--- Код: ---getline(fileIn,strBuff);

--- Конец кода ---
Он читает всё строку целиком, а не по словам.

--- Конец цитаты ---
Если понадобится считывать числа, то getline не пойдёт. Не разбирать же потом строки на символы и выискивать там числа.

--- Цитата: gepar от 18 Июль 2014, 00:12:39 ---Потому что в конце не было чего считывать и оператор >> ничего не сделал с старым содержимым (никто же не говорил что если не будет чего считывать то строка станет пустой, верно?).

--- Конец цитаты ---
Но после считывания последнего слова программа натыкается на EOF, и в while условие становится ложным, соответственно, ещё раз слово вывестись не должно.
gepar:

--- Цитата: Heidr ---Если понадобится считывать числа, то getline не пойдёт. Не разбирать же потом строки на символы и выискивать там числа
--- Конец цитаты ---

Однобоко смотришь, а если тебе надо считать 100500 чисел из файла будешь вот так по байтику почитывать и парсить? Правда это тебя пока волновать не должно, я всего лишь намекаю что вариант считать строку и потом парсить тоже вполне нормальный.

--- Цитата: Heidr ---Но после считывания последнего слова программа натыкается на EOF, и в while условие становится ложным, соответственно, ещё раз слово вывестись не должно.
--- Конец цитаты ---

Подсказка 1: чтение с потока игнорирует пробелы и переводы строк, дальше надеюсь ты сам откроешь отладчик и посмотришь что происходит с состоянием потока.
Подсказка 2: http://www.cplusplus.com/reference/ios/ios/fail/
MetalliC:

--- Цитата: gepar ---дальше надеюсь ты сам откроешь отладчик и посмотришь что происходит с состоянием потока
--- Конец цитаты ---
во во, а то у  меня сложилось впечатление, что Heidr дебагером принципиально не хочет пользоваться ;)
Heidr:
Не дошёл я ещё до изучения отладчика.

В текстовом файле в конце был переход на новую строку, если его убрать, то последнее слово выводится один раз. Значит, перевод строки не проигнорировался? Если добавить ещё пустых строк или строк из пробелов, то слово всё равно выводится дважды.
--- Цитата: gepar от 18 Июль 2014, 21:45:53 ---а если тебе надо считать 100500 чисел из файла будешь вот так по байтику почитывать и парсить?

--- Конец цитаты ---
Почему по байтику? В числовые переменные и буду считывать сразу.
gepar:

--- Цитата: Heidr ---Почему по байтику? В числовые переменные и буду считывать сразу.
--- Конец цитаты ---

А вдруг там 1 2 3 xyj 4 5 6 ?


--- Цитата: Heidr ---Не дошёл я ещё до изучения отладчика.
--- Конец цитаты ---

Это не относиться к с++ как к таковому, это не возможности языка, не жди главу в книге по поводу того как в vs6 или bc3 можно использовать отладчик, они мало пользы тебе принесут если даже будут.


--- Цитата: Heidr --- Значит, перевод строки не проигнорировался?
--- Конец цитаты ---


--- Цитата: gepar ---: чтение с потока игнорирует пробелы и переводы строк
--- Конец цитаты ---

А вот ты ещё раз подумай: мы считывали значения и в конце файла остался ещё пробел значит это ещё не конец файла (там же ж пробел), но с другой стороны при след. чтении раз там пробел то мы его игнорируем и узнаём что кроме пробела там ничего и нету значит и считывать в строку нам нечего. Если ты всё равно не понял то не зацикливайся, запиши где-то в свой TODO списочек к чему вернуться через пару недель, возможно позже когда лучше ознакомишься с концепцией потоков и таки захочешь пройти по той ссылке что я дал (ты же туда не ходил, а если ходил то глянул что там какие-то флаги и английский, сказал фу, и закрыл, я уверен) тебе станет понятнее :)
cviten:
Я всё-таки советую поставить компилятор с графической оболочкой. С ней действительно будет проще.

Microsoft Visual Studio 2012 (Express-версия беспатная)
Eclipse for C/C++
Code::Blocks

И, кстати:

--- Цитата: http://tdm-gcc.tdragon.net/quirks ---TDM-GCC doesn't link your programs with the libgcc or libstdc++ runtime DLLs by default.

--- Конец цитаты ---
То, что у них всё работает на последней VS, ещё не значит, то что у них нет warning, которые на других копиляторах считаются ошибками.
Heidr:

--- Цитата: gepar от 19 Июль 2014, 10:07:28 ---ты же туда не ходил, а если ходил то глянул что там какие-то флаги и английский, сказал фу, и закрыл, я уверен

--- Конец цитаты ---
Ну почему же, ходил и даже закрыть не успел. Просто не понял, как написанное там поможет, ведь ошибок чтения вроде как нет.
--- Цитата: cviten от 19 Июль 2014, 11:57:37 ---Я всё-таки советую поставить компилятор с графической оболочкой. С ней действительно будет проще.

--- Конец цитаты ---
Я когда-то пробовал ставить Eclipse и Code::Blocks, что-то не получилось, не помню, что именно. Может, потом попробую ещё, если буду писать что-нибудь большое. А Visual Studio не подходит,так как иногда работаю на ноутбуке с убунтой, и нужна кроссплатформенность. Да и удобнее не создавать проект и выбирать его параметры, а просто открыть исходник и компилировать.
gepar:

--- Цитата: Heidr ---Ну почему же, ходил и даже закрыть не успел. Просто не понял, как написанное там поможет, ведь ошибок чтения вроде как нет.
--- Конец цитаты ---

А ты попробуй подставить проверку перед тем как выводить полученный текст.

Добавлено позже:

--- Цитата: Heidr ---Я когда-то пробовал ставить Eclipse и Code::Blocks, что-то не получилось, не помню, что именно.
--- Конец цитаты ---

Ну в первом случае предположу что у тебя java нет, а во втором предположу что скачал ты его без gcc и когда тот попросил указать путь к gcc ты испугался и закрыл его.

--- Цитата: Heidr ---А Visual Studio не подходит,так как иногда работаю на ноутбуке с убунтой, и нужна кроссплатформенность.
--- Конец цитаты ---

Да, это проблема конечно, тупой майкрософт со своими потоками и дурацкими циклами forMS(intMS i=0 ..., всё у них не как у людей!

--- Цитата: Heidr ---Да и удобнее не создавать проект и выбирать его параметры, а просто открыть исходник и компилировать.
--- Конец цитаты ---

Вот-вот, компилятор MS же не умеет компилить один файл, тупой майкрософт и тупой виндовс.
</sarcasm>
Срсли ты хоть разберись сначала прежде чем писать такую белеберду :-\
Heidr:
Ну что за люди в русском интернете? Спросишь совета по какому-нибудь мелкому вопросу, и хрен кто поможет. Зато поржать все горазды.
gepar:
Heidr, да-да, мы прям хохочем только так, очень смешно написано. Тебе же уже посоветовали  поставить ide - ты поставил? Тебе советовали запустить отладчик и посмотреть когда меняются флаги - ты запустил? Тебе посоветовали почитать статью про состояние потока и добавить проверку состояния потока - ты это сделал? Нет, тебе непонятно, ты просишь объяснить, но объяснения тебе тоже непонятны и делать ты ничего предложенного не хочешь и вообще все мы злые такие и плохие.
Ещё раз по пунктам:
1)Проект в ide это формальность, хочешь держать код в одном файле так никакая ide этому мешать не будет. CodeBlocks так вообще мультиплатформенный, можешь его проекты хоть на маке открывать (и снова я жую за тебя потому что ты не соизволил даже зайти на сайт и посмотреть что тебе предложили выше).
2)Стандарт с++ на то и стандарт что твои хелло ворлды по книге будут компилироваться любыми современными компиляторами на любых платформах.
3)

--- Код: --- fileIn >> strBuff; // Here we read in a word
if (!fileIn.fail())
cout << strBuff << " "; // Now we're simply regurgitating the word we read in to the screen
--- Конец кода ---
неужели ты правда не мог написать это сам если бы прошёл по той ссылке?
MetalliC:

--- Цитата: Heidr ---Ну что за люди в русском интернете? Спросишь совета по какому-нибудь мелкому вопросу, и хрен кто поможет.
--- Конец цитаты ---

нормальные люди.
и совет тебе дали самый нормальный - поставить IDE с которым будет видно как на ладони то, как же работает твой код.
но совет тебе не нужен, тебе нужен тупо ответ, готовое решение, из серии "я не хочу сам ковыряться и разбираться что же у меня не так, так что скажите что сделать чтоб было так".
а потом к гадалке не ходи еще раз так же "спросишь совета", а потом еще, и еще, вместо того чтобы один раз разобраться как что-то работает или научиться чему-то.
Heidr:

--- Цитата: gepar от 19 Июль 2014, 15:33:40 ---неужели ты правда не мог написать это сам если бы прошёл по той ссылке?

--- Конец цитаты ---
Я это не совсем так написал.

А плагин-отладчик можно и к моей IDE поставить. Я раньше отладчиками не пользовался, в университете один семестр преподавали C++, просто рассказывая об основных функциях, а потом несколько семестров давали задания на решение дифференциальных уравнений. Если что-то не так работало, приходилось искать баги непосредственно в коде.
--- Цитата: MetalliC от 19 Июль 2014, 16:07:25 ---а потом к гадалке не ходи еще раз так же "спросишь совета", а потом еще, и еще, вместо того чтобы один раз разобраться как что-то работает или научиться чему-то.

--- Конец цитаты ---
Не переживайте, не буду больше спрашивать.
gepar:

--- Цитата: Heidr ---Если что-то не так работало, приходилось искать баги непосредственно в коде.
--- Конец цитаты ---

Отладчик для этого и сделан, просто начни им пользоваться, отговорка "я в книге ещё до этого не дошёл" не подходит, а если в книге этого нет или знания устарели? Если будешь идти строго по книге то с большой вероятностью получишь такие же "узкие" знания как и после курса программирования в универе.

--- Цитата: Heidr ---Не переживайте, не буду больше спрашивать.
--- Конец цитаты ---

Так мы и не переживаем, ты ведь нам одолжение этим не делаешь, лол. И только не надо пожалуйста снова о плохих русских форумах и т.д и т.п, ты спросил - мы тебя направили на протоптанную дорожку и сказали что почитать, почему возникла проблема и что поставить, но ты же не разобравшись с ответами начинаешь спрашивать то же самое перекрутив и вобще хочешь найти какой-то свой ограниченный путь с мультиплатформой и без отладчиков - пожалуйста, но и своё фе тогда нечего высказывать :)
Skay:

--- Цитата: Heidr ---Ну что за люди в русском интернете? Спросишь совета по какому-нибудь мелкому вопросу, и хрен кто поможет. Зато поржать все горазды.
--- Конец цитаты ---

Это вообще в среде кодеров так) особенно в C++, если почитать коменты складывается впечатление что на нем никто правильно не умеет писать  :lol:
во нашел, на эту тему даже статья была) http://habrahabr.ru/post/178747/
Thrushbeard:
Для того чтобы использовать UTF-8 в C++ приложении на Windows необходимо будет перегонять UTF-8 в UTF-16, так как Windows понимает в своих API только юникод кодировку UTF-16, а не UTF-8. Вариантов обычно несколько:
1) Перегнать исходные данные из UTF-8  в UTF-16 заранее
2) При чтении данных использовать MultiByteToWideChar и хранить всё в wstring (нативно выводится в консоль без проблем)
3) libiconv
4) Использовать какой-нибудь Qt, Boost или ещё какой фреймфорк, где есть встроенные функции для работы с UTF-8

Постфиксные и префиксные де/инкременты - это легко. Префиксные меняют значение переменной, и возвращают изменённый результат. Постфиксные возвращают значение переменной,  а потом меняют её значение. Есть один подвох, когда в выражении несколько пост/префиксных инкрементов или декрементов одной переменной, то можно получить "неопределённое поведение", как было у Heidr, это связано с хранением переменных на стеке.
Навигация
Главная страница сообщений
Предыдущая страница

Перейти к полной версии