Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 149, средняя оценка - 4.92
Olejeg85
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164
#1

решил изучить с++ - C++

27.03.2011, 17:19. Просмотров 19142. Ответов 179
Метки нет (Все метки)

всем привет, решил начать изучать с++, скачал MSVC++ 2010 express, какую литературу вы посоветуете для изучения данного языка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2011, 17:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос решил изучить с++ (C++):

Решил изучить новую низкоуровневую область в программировании, что посоветуете?
Решил на досуге начинать изучать что - то новое для повышения так сказать...

Какие книги лучше всего изучить чтобы хорошо изучить с++
Хотелось бы открыть тему, либо если она уже есть подскажите ссылку. Хочу...

Хочу изучить C++
Начал читать книгу С++ на начинающих можно сказать чайников. Не могу...

2 изучить работу с массивом
Нам задали две лабораторные по С++ , с которыми у меня возникли трудности ...

Стоит ли изучить программирование в стиле С?
Стоит ли изучит программирование в стиле С? В книге написано про строки в...

Cтоит ли после изучения Си++ изучить Си
Подскажите, стоит ли после изучения Си++ изучить Си? Ведь в Си++ поддерживаются...

179
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
13.05.2011, 20:09 #161
stdcout, http://progs.biz/cpp/cpp/lessons/033.aspx
2
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
14.05.2011, 01:25 #162
Извиняюсь за то, что пишу сюда снова.
Ввожу текст в окно редактирования, ввожу имя файла в предназначенное для этого кнопку,
нажимаю кнопку "Сохранить".
В отдельных случаях сохраняет, в других вылетает непонятная ошибка. Это вроде как-то связано с размером введённого текста, хотя не уверен.

ОС Windows инициировала точку останова в wp10may.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в wp10may.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит wp10may.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки
Вот фрагмент:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
if (!(iTemp = SendMessage(hwndFilename, EM_GETLINE, 0, (LPARAM) szFileName)))
                    MessageBox(hwnd, "Введите имя файла!", szAppName, MB_OK);
            else
            {
                if (IDYES == MessageBox(hwnd,
                        "Вы точно хотите сохранить файл под таким именем?",
                                szAppName, MB_YESNO))
                {
                    szFileName[iTemp] = '\0';
                    strcpy(szTemp, szAppName);
                    strcat(szTemp, "       Сохранение...");
                    SetWindowText(hwnd, szTemp);
                    SetCursor(LoadCursor(NULL, IDC_WAIT));
                    
                    file = fopen(szFileName, "w");
 
                    iLines = SendMessage(hwndEditor, EM_GETLINECOUNT, 0, 0);
                    iMaxLength = 0;
                                        /* Определяем максимальную длину
                                            строки в окне редактирования.    */
                    for (i = 0; i < iLines; ++i)
                    {
                        iTemp = SendMessage(hwndEditor, EM_LINELENGTH, i, 0);
                        if (iTemp > iMaxLength)
                            iMaxLength = iTemp;
                    }
                    szPerLine   = (char *) malloc(iMaxLength + 2);
                                        /* Записываем в файл все строки поочерёдно. */
                    for (i = 0; i < iLines; ++i)
                    {
                        iTemp = SendMessage(hwndEditor, EM_GETLINE, i, (LPARAM) szPerLine);
                                                /* На случай, если в конец строки
                                                    szPerLine не добавляется завершающий ноль,
                                                    думал, что проблема в этом. */
                        szPerLine[iTemp] = '\0'; 
                        fprintf(file, "%s", szPerLine);
                    }
                    free(szPerLine);
 
                    fclose(file);
 
                    SetWindowText(hwnd, szAppName);
                    SetCursor(LoadCursor(NULL, IDC_ARROW));
                }
            }
Добавлено через 3 минуты
Это всё в Visual Studio.
И после появления сообщения об ошибке, открывается файл dbgheap.c, и указывается последняя строчка в данной функции из того файла.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/***
*int _CrtIsValidHeapPointer() - verify pointer is from 'local' heap
*
*Purpose:
*       Verify pointer is not only a valid pointer but also that it is from
*       the 'local' heap. Pointers from another copy of the C runtime (even in the
*       same process) will be caught.
*
*Entry:
*       const void * pUserData     - pointer of interest
*
*Return:
*       TRUE - if valid and from local heap
*       FALSE otherwise
*
*******************************************************************************/
extern "C" _CRTIMP int __cdecl _CrtIsValidHeapPointer(
        const void * pUserData
        )
{
        if (!pUserData)
            return FALSE;
 
        if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader), FALSE))
            return FALSE;
        /* Вот она. */
        return HeapValidate( _crtheap, 0, pHdr(pUserData) );
}
0
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
05.06.2011, 13:51 #163
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
0
iama
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 13:56 #164
stdcout, новый вопрос - новая тема.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 14:10 #165
Цитата Сообщение от stdcout Посмотреть сообщение
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
Открой cmd и вбей туда pause
Обязательно API? Есть std::cin.get(), к примеру.
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 16:47 #166
Цитата Сообщение от stdcout Посмотреть сообщение
если в подключённом к проекту хедере не добавить пустую строчку в конец...
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
1
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:01 #167
Цитата Сообщение от Deviaphan Посмотреть сообщение
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
А где в стандарте подобное требование написано?
В Билдере иногда проскакивает как раз такая ошибка - типа обнаружен конец файла, причем именно в системном хедере.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 19:11 #168
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:23 #169
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
Ок, пороюсь. Спасибо.
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
05.06.2011, 19:27 #170
Ну вот, например, C++ Standard ANSI ISO/IEC 14882:2003
Раздел 2 Lexical conventions
Параграф 2.1 Phases of translation
Пункт 2
Each instance of a new-line character and an immediately preceding backslash character is deleted,
splicing physical source lines to form logical source lines. If, as a result, a character sequence that
matches the syntax of a universal-character-name is produced, the behavior is undefined. If a source
file that is not empty does not end in a new-line character, or ends in a new-line character immediately
preceded by a backslash character, the behavior is undefined.
2
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
05.06.2011, 22:36 #171
diagon, да API, потому что на C нужно, а не C++.
0
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
07.06.2011, 17:45 #172
Никто не знает, примерно как можно реализовать функцию getch()? Ведь реализована же она как-то в conio.h. Или там не через C?
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
07.06.2011, 18:02 #173
Если приложение консольное, то в Windows можно использовать _getch() из conio.h. На других платформах это может быть реализовано по другому. Для GUI приложения аналога быть не может, там совсем другая модель исполнения.
1
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:04 #174
Код не кроссплатформенный получится.
C
1
scanf("*");
При нажатии на ентер окошко захлопнется. Чем не вариант?
2
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
07.06.2011, 18:15 #175
Мне нужна была функция, которая ждёт нажатия любой клавиши и возвращает её код.
Это не настолько важно, просто, хотелось попробовать реализовать или узнать, как могли её реализовать авторы библиотеки conio.h.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:31 #176
Можете скачать исходники ncurses, там реализована getch() для линукса. А исходники conio.h вы врядли найдете=)
Вроде еще можно ассемблерной вставкой сделать, здесь есть что-то похожее.
1
Bekcha
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 1
02.07.2011, 15:22 #177
Olejeg85, вы слишком наивны, если думаете, что с++ можно изучить за месяц. Там слишком много сложных и тонких мест. Это не Basic, который месяц и изучил почти полностью. С++- язык для профессионалов. Например, я вожусь с консольными приложениями уже почти полтора года и ещё есть, что изучать. А если вам необходимо освоить с++ на хорошем уровне(основы), то я готов вам подсобить. Могу абсолютно бесплатно научить вас осоновам с++. Если предложение вас заинтересовало, то пишите на dr.andrey-kalinin2011@yandex.ru(особенно, если вы школьник).
0
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
29.08.2011, 14:56 #178
Никто не знает, примерно как можно реализовать функцию getch()? Ведь реализована же она как-то в conio.h. Или там не через C?
Сам спросил - сам отвечу. В книге Харта прочитал про функции для работы с консолью. Вот один из вариантов реализации getch() из <conio.h> для Windows.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int MyGetch()
{
    char   buffer[1] = { 0 };
    HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
 
    if (hIn != INVALID_HANDLE_VALUE)
    {
        DWORD  dwNumber;
        DWORD  dwOldMode;
 
        GetConsoleMode(hIn, &dwOldMode);
        SetConsoleMode(hIn, ENABLE_PROCESSED_INPUT);
        ReadConsole(hIn, buffer, 1L, &dwNumber, NULL);
        SetConsoleMode(hIn, dwOldMode);
    }
    return ((int) (unsigned char) buffer[0]);
}
1
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
29.08.2011, 15:37 #179
stdcout, так а зачем вам?
0
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
29.08.2011, 16:22 #180
OstapBender,
stdcout, так а зачем вам?
да так, незачем. просто, до того, как узнал о функция WinAPI для работы с консолью, реализация этой функции казалась загадочной.
0
29.08.2011, 16:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2011, 16:22
Привет! Вот еще темы с решениями:

Как школьнику изучить программирование?
Самостоятельно изучила основы С и С++. Как продолжить изучение, если ты...

Какую программу нужно что бы изучить С++
Мне друг сказал что это хороший форум Так вот хочу спросить Какую программу...

За какое время можно досканально изучить C++
Народ здравствуйте хотелось бы задать вам вопрос &quot;За какое время можно...

Что необходимо изучить начинающему с++ разработчику
Здравствуйте. Не так давно начал серьёзно заниматься обучением программированию...


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

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

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