Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/308: Рейтинг темы: голосов - 308, средняя оценка - 4.51
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20

Тайна Страуструпа - std_lib_facilities.h !

17.11.2011, 02:22. Показов 60720. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Я начал изучать чудесный язык программирования С++ по книге Принципы и практика использования C++ Страуструпа.
Начитался ,что автор весьма серьезный и из этой книги можно подчеркнуть много полезного.
Но сразу столкнулся с проблемой,Код автора оказался у меня неработоспособен =( :

C++
1
2
3
4
5
6
7
8
#include "../../std_lib_facilities.h"       /*там было еще вот так "std_lib_facilities.h" ,что так же не дало никакого результата,в какие папки бы я не кидал этот фаил, взятый с его сайта.*/
 
int main()
{
   cout << "Hello, World!\n";
   keep_open_window();
   return 0;
}
я читал приложение ,в конце книги ,в котором даны инструкции по работе с этим магическим заголовком. Ничего не помогло ,весь итог :
helloworld.cpp(3): warning C4627: #include "../../std_lib_facilities.h": пропущен при поиске использования предкомпилированного заголовка
Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
helloworld.cpp(11): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Конечно,в этой программе вместо первой строчки, можно было поставить строки (опять же данные в книге,как сноска к первой программе) ,но каждый раз модифицировать написанные в книге программы ,для человека не знакомого с этим делом -весьма и весьма печальное занятие...

Так как я ,не знаком ранее с программированием ,я решил поискать книгу ,в которой идет объяснение по написанию сразу в Visual Studio 2010. По отзывам этот автор весьма авторитетен и его книги весьма поучительные,но столкнувшись с этим делом ,продолжил свои поиски и нашел книгу Бориса Пахомого C/C++ и Visual Studio 2010 ,но найдя ошибку в коде третей его программки (кстати в скриншотах ясно видно ,что программа работает некоректно,но автора это не остановило ),я усомнился ,стоит ли продолжать обучение по этой книге ,потому как объяснение тоже какое то стремное (


Ребята ,помогите мне с этим std_lib_facilities.h у Страуструп или посоветуйте стоящую книгу для старта С++ в Visual Studio 2010.


Заранее благодарю всех откликнувшихся!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2011, 02:22
Ответы с готовыми решениями:

Тайна Страуструпа - std_lib_facilities.h (2)
Ребят уже голову сломал как дописать в код. Предложите пользователю ввести значение m если ваш друг -мужчина, f -если женщина. ...

Std_lib_facilities.h Страуструпа, ругается на синтаксис
Всем салют! Нужна помощь, проблема в следующем. Открыл Страуструпа, скачал std_lib_facilities.h с его сайта, набрал код: #include...

Не работает код с Функцией error и библиотекой std_lib_facilities из книги Страуструпа
Я новичок в программировании. Учу по книге Страуструпа, там вначале нужно было подключить нестандартуную библиотеку...

83
26.11.2011, 19:54
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Сыроежка Посмотреть сообщение
то я неоднократно ловил этого silent_1991 на безграмотности
Будь здесь Страуструп, вы и его бы на безграмотности поймали. Это тоже чтобы остальным было понятно.

0
Заблокирован
26.11.2011, 20:22
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я этого и не отрицаю, это раз. У меня есть более интересные занятия, чем штудирование стандарта - это два. Ваши разборки с модераторами мне глубоко безразличны (меня почему-то они трут без личной ненависти, что я делаю не так?) - это три. Когда я не прав, то ошибки признаю - это четыре.
Ну и раз уж меня процитировали, то может подскажешь: если я изменю точку входа с main на свою функцию, то обязан ли я использовать Return? Это как-бы пять.)
Я не обвинял вас в том, что вы что-то не знаете. Я лишь константировал на основании вами заданного вопроса, что ваши знания обрывочны, и для этого и существует форум, чтобы другие смогли подсказать. У меня нет разборок с эти silent_1991 , потому что когда имеешь дело с непорядочными людьми, то и так все ясно. Он нахамил, что не мне судить про хороший тон программирвоания, а после этого еще полез за "пистолетом", то есть начал использовать свое служебное положение с целью сведения личных счетов.
Та кчто действительно оставим этого silent_1991 с его злобой.

Отвечаю на ваш вопрос. Эту возможность опускать предложение return, стандарт оговаривает только для функции main. раньше до принятия стандарта можно было, например, ничего не возвращать из функции, которая на самом деле имела тип возвращаемого значения. Стандарт запретил делать такие вещи, но оставил послабление для функции main. Если вы опустите предложение return для функции main, то компилятор вставляет код, аналогичный return 0;, естественно для всех других функций будет выдано по крайней мере предупреждение.
Есть ситуации, когда компилятор вообще не способен определить, что в функции отсутствует предложение return. Тогда поведение такой функции неопределенное.

Я видел совсем недавно пример, где был примерно такой код

C++
1
2
3
4
5
6
7
8
9
10
11
12
int f( int x )
{
   if ( x == 0 )
   {
      /* некоторый код */
      /* предложение return отсутствует */
   }
   else if ( x != 0 )
   {
      return 1;
    }
}
Я могу ошибаться, но код был очень похож на данный пример.

И новичок спрашивал, почему при вызове функции у него моментально завершалась выполнении программы, то есть происходил выход из main. Проблема была в том, что он передавал функции x == 0, и из-за отсутсатвия return поведение программы было неопрделенным. Неизвестно, куда передаст управление код программы.

Я в связи с этим вспоминаю анекдотичный случай на другом форуме. Там был такой же модератор, как этот silent_1991

Был раздел, посвященный обучению языку С++. И в этом разделе утверждалось, что самая маленькая программа на С++ по количеству строк , это следующая

C++
1
2
3
4
int main()
{
   return 0;
}
При этом дополнительно сообщалась, что это самая маленькая программа как на С++, так и на С.

Я возразил, что это, во-первых, это не является самой маленькой программой на С++. Самой маленьклой программой по количеству строк на С++ является программа

C++
1
2
3
int main()
{
}
Во-вторых, что для языка С это вообще некорректная программа, так как в С функция main должна объявляться как

int main( void )
{
}


После чего местный модератор, таклой же хам , как этот silent_1991 , в точности повторил фразу silent_1991 , что не мне судить, что я слишком о себе высокго мнения. Привел кучу глупейших возражений типа ттоого, что без return не будут вызваны какие-то деструкторы (ну, не знает челвоек стандарта! Что с ним делать?!), и забанил меня! Я это узнал, когда набирал цитату из стандарта, но так и не смог ее ввести, так как тот модератор поспешил меня забанить.

Это типичнакя ситуация для российских форумов, когда модератором ставят такого ограниченного, непорядочного человека! Они предпочитают аргументы заменять своим особым положением модератора, удаляя всех тех, кто им что-то возражает. То есть они наивно считают, что положение модератора дает им право хамить!
1
26.11.2011, 20:26

Не по теме:

Плюсик за середину поста.)

0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:08  [ТС]
я очень рад ,что мой вопрос вызвал такую пламенную дискуссию,ведь лишь в споре рождается истина .
по поводу ввода ,там действительно у меняя была опечатка ,мы вводим слова в "temp" ,я исправил все ошибки.
я приведу пример ,который я ввожу сейчас:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <std_lib_facilities.h>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> words;
string temp;
while(cin>>temp)
     words.push_back(temp);
cout<<"Number of words: "<<words.size()<<endl;
sort(words.begin(),words.end());
for(int i=0; 1< words.size(); ++i)
    if(i==0 || words[i-1] !=words[i])
        cout<<words[i]<<"\n";
}
Итог:

------ Построение начато: проект: vectors, Конфигурация: Debug Win32 ------
Построение начато 26.11.2011 19:04:27.
InitializeBuildStatus:
Обращение к "Debug\vectors.unsuccessfulbuild".
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C:\Users\Сергей\Documents\Visual Studio 2010\Projects\vectors\Debug\vectors.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.11.2011, 21:13
У тебя не правильно настроен проект. Лучше создавай НЕ пустой проект, пока не научишься самостоятельно его правильно настраивать.)

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
0
Заблокирован
26.11.2011, 21:14
Serg_Smith,

Вы наверное пользуетесь компилятором Microsoft VС++, который требует для проектов вставлять в самое начало заголовок #include "stdafx.h"
0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:17  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
У тебя не правильно настроен проект. Лучше создавай НЕ пустой проект, пока не научишься самостоятельно его правильно настраивать.)

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
вы правы ,я не заметил эту ошибку (
исправил ,но ошибка до сих пор осталась.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
26.11.2011, 21:19
Цитата Сообщение от Serg_Smith Посмотреть сообщение
InitializeBuildStatus:
Обращение к "Debug\vectors.unsuccessfulbuild".
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C:\Users\Сергей\Documents\Visual Studio 2010\Projects\vectors\Debug\vectors.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Две мысли:
-- очистить папку debug; не знаю как в VS, но в С++Builder опция Project->Clear Project иногда помогает избавиться от Link Error;
-- удалить нафиг ненужный header <std_lib_facilities.h>.
0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:25  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Serg_Smith,

Вы наверное пользуетесь компилятором Microsoft МС++, который требует для проектов вставлять в самое начало заголовок #include "stdafx.h"
MS Visual Studio 2010 Professional, дело в том ,что до этого я же прописывал программы с книги ,когда все таки разобрался с std_lib_facilities.h и все работало.

Добавлено через 1 минуту
Цитата Сообщение от BRcr Посмотреть сообщение
Две мысли:
-- очистить папку debug; не знаю как в VS, но в С++Builder опция Project->Clear Project иногда помогает избавиться от Link Error;
-- удалить нафиг ненужный header <std_lib_facilities.h>.
второй не помог.

Добавлено через 4 минуты
Вложение 109460
кусочек с книги.
0
Заблокирован
26.11.2011, 21:26
Цитата Сообщение от Serg_Smith Посмотреть сообщение
MS Visual Studio 2010 Professional, дело в том ,что до этого я же прописывал программы с книги ,когда все таки разобрался с std_lib_facilities.h и все работало.

Добавлено через 1 минуту


второй не помог.
Тут два варианта. Если вы запускаете модуль только на компиляцию с помощью Ctrl+F7, то этат ошибка может выскакивать. Ежели она выскакивает на нажатие клавиши Ctrl+F5, то значит вам лучше создать новый проект, а туда аккуратно скопировать ваш код, который предварительно можно сохранить в каком-нибудь текстовом файле рограммы Блокнот. И на забыть про заголовочный файл, который, как я указал, должен быть первым в проекте.
И не слушайте советы от BRcr. Он несет глупость, так как это центральный заголовочный файл по материалу книги.
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
26.11.2011, 21:31
Цитата Сообщение от Сыроежка Посмотреть сообщение
И не слушайте советы от BRcr. Он несет глупость, так как это центральный заголовочный файл по материалу книги...
... , без которого в данном случае можно и обойтись.
0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:38  [ТС]
таинственным образом оно заработало о_О
если я копирую код и вставляю в новый проект ,он не работает.
если я копирую в блокнот и от-туда копирую в новый проект,программа работает.
весьма занятно)))

Огромнейшее спасибо вам и всем,кто пытался помочь с этой проблемой!
Но на будущее ,все же -из-за чего это проблема возникает?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 07:55
У тебя не находится точка входа, это проблема именно с настройкой проекта. Не правильно выбран CRT. Например, релизный вместо отладочного или с не правильной компоновкой. Сгенерируй НЕ пустой проект и по изучай его настройки. Твоя проблема исправляется буквально одним-двума комбобоксами, но по памяти я не скажу где они.)
0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
28.11.2011, 03:39  [ТС]
спасибо большое за совет )будем стараться)

Добавлено через 14 часов 52 минуты
И сново проблема(
одно из заданий -написать программку ,которая по вводу цифр ,должна писать эту цифру словом,но ошибки при компиляции...что не так -не могу понять(((
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
46
47
48
49
50
51
52
53
54
55
56
#include <std_lib_facilities.h>
 
 
 
int main()
{
    vector<string> digitals(10);
    string digitals [0]="zero";
    string digitals [1]="one";
    string digitals [2]="two";
    string digitals [3]="three";
    string digitals [4]="four";
    string digitals [5]="five";
    string digitals [6]="six";
    string digitals [7]="seven";
    string digitals [8]="eight";
    string digitals [9]="nine";
    char dig=' ';
    cout<<"Enter digital:\n";
    cin>>dig;
    switch(dig){
        case '0':
            cout<<digitals [0]<<"\n";
                break;
                case '1':
            cout<<digitals [1]<<"\n";
            break;
                case '2':
            cout<<digitals [2]<<"\n";
                break;
                case '3':
            cout<<digitals [3]<<"\n";
                break;
                case '4':
            cout<<digitals [4]<<"\n";
                break;
                case '5':
            cout<<digitals [5]<<"\n";
                break;
                case '6':
            cout<<digitals [6]<<"\n";
                break;
                case '7':
            cout<<digitals [7]<<"\n";
                break;
                    case '8':
            cout<<digitals [8]<<"\n";   
                break;
                    case '9':
            cout<<digitals [9]<<"\n";
                break;
                    default :
                        cout<<"Sorry, but I don't know what is it T_T \n";
                            break;
    }
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
28.11.2011, 10:51
Serg_Smith, и снова вы не выложили текст ошибок
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.11.2011, 11:00
C++
1
2
3
4
5
6
7
8
9
10
11
        vector<string> digitals(10);
        string digitals [0]="zero";
        string digitals [1]="one";
        string digitals [2]="two";
        string digitals [3]="three";
        string digitals [4]="four";
        string digitals [5]="five";
        string digitals [6]="six";
        string digitals [7]="seven";
        string digitals [8]="eight";
        string digitals [9]="nine";
Такого в книжке не может быть. Полагаю string во всех этих случаях лишнее.
1
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
28.11.2011, 11:59  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
Serg_Smith, и снова вы не выложили текст ошибок
я не выложил потому,что там огромнейшая была ошибка .

Добавлено через 4 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
        vector<string> digitals(10);
        string digitals [0]="zero";
        string digitals [1]="one";
        string digitals [2]="two";
        string digitals [3]="three";
        string digitals [4]="four";
        string digitals [5]="five";
        string digitals [6]="six";
        string digitals [7]="seven";
        string digitals [8]="eight";
        string digitals [9]="nine";
Такого в книжке не может быть. Полагаю string во всех этих случаях лишнее.
да,вы правы! именно в этом и была моя ошибка!
Спасибо вам огромнейшее за помощь!

Добавлено через 6 минут
Это было написано не в книге ,это задание в конце параграфа ,которое нужно было выполнить.
0
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 17:48
Помогите добавить std_lib_facilities.h. Скачал с сайта, по инструкции сделал, положил файлик в header, в папку визуалки,
C++
1
#include "std_lib_facilities.h"
не видит сам файл(( в чем может быть дело?
Миниатюры
Тайна Страуструпа  -   std_lib_facilities.h !  
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
28.01.2012, 17:58
А где этот файл находится?
0
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 19:22
Цитата Сообщение от Chelioss Посмотреть сообщение
А где этот файл находится?
В папке header проекта, в папке мои документы\visual studio (пробовал указывать путь), все сделано по инструкции, которая была на сайте, в файле лежит код с сайта, все проверено уже много раз.. Просто удивительно, сделал все верно и все равно не видит..(

Добавлено через 1 час 21 минуту
Разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2012, 19:22
Помогаю со студенческими работами здесь

Std_lib_facilities не подключается
#include &quot;iostream&quot; #include &quot;std_lib_facilities&quot; int main() // Програми начинаются с виполнение мейн!!!! { cout &lt;&lt;...

Std_lib_facilities.h в dev C++ 5.4.2
Господа программисты, помогите новичку. есть проблема которую не решить самому. В Dev C++ 5.4.2 ввожу #include...

Подключение заголовочного файла std_lib_facilities.h
Здравствуйте. Учу C++ по книге Stroustrup'а. Автор настоятельно просит использовать библиотеку std_lib_facilities.h Создал...

Тайна ссылки r-value
Попробовал развернуть пример из раздела 8.1 книги Скотт Мейерс &quot;Эффективный и современный С++&quot;, заменив класс string классом MyData с...

Задание из Страуструпа
Добрый день,дорогие форумчане.В общем читаю книжечку Страуструпа.Выполняю задания.Вот что-то у меня ступор.Прошу Вашего совета:) ...


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

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru