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

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

17.11.2011, 02:22. Показов 61929. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru