Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 06:51   #1
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость C++ <string.h>

Добрый день!
Подскажите пожалуйста, почему компилятор ругается на
Цитата:
string q

#include <string.h>
#include <iostream.h>

void main()
{
string q;
cout << "stroka: "; cin >> q;
cout << "\nvi vveli: " << q;
}

Мои ошибки:
Цитата:
Deleting intermediate files and output files for project '1 - Win32 Debug'.
--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.cpp
c:\c\1\1.cpp(6) : error C2065: 'string' : undeclared identifier
c:\c\1\1.cpp(6) : error C2146: syntax error : missing ';' before identifier 'q'
c:\c\1\1.cpp(6) : error C2065: 'q' : undeclared identifier
Error executing cl.exe.

1.exe - 3 error(s), 0 warning(s)
sir.andrey вне форума Ответить с цитированием
Старый 10.07.2011, 07:55   #2
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Вместо:
Код:
string q;
Попробуйте это:
Код:
std::string q;
zotox вне форума Ответить с цитированием
Старый 10.07.2011, 08:04   #3
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Цитата:
Сообщение от zotox Посмотреть сообщение
Вместо:
Код:
string q;
Попробуйте это:
Код:
std::string q;
Нет чувак, ошибок больше!

Я пишу на VC++ 6.0 там такого бреда нет!

Я имею в виду это:
Цитата:
using namespace std

Последний раз редактировалось sir.andrey; 10.07.2011 в 08:15.
sir.andrey вне форума Ответить с цитированием
Старый 10.07.2011, 09:21   #4
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Цитата:
Сообщение от sir.andrey Посмотреть сообщение
Нет чувак, ошибок больше!
Чуть больше уважения к формумчанам!!!
Help уже отменили?
Вот работающий код
Код:
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

void main()
{
   string q;
   cout << "stroka: "; cin >> q;
   cout << "\nvi vveli: " << q;
}
Не понмню про VC6, может первую строку там не нужно. (#include "stdafx.h")
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 10.07.2011, 09:26   #5
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Цитата:
Сообщение от VadikV Посмотреть сообщение
Чуть больше уважения к формумчанам!!!
Help уже отменили?
Вот работающий код
Код:
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

void main()
{
   string q;
   cout << "stroka: "; cin >> q;
   cout << "\nvi vveli: " << q;
}
Не понмню про VC6, может первую строку там не нужно. (#include "stdafx.h")
Эх нифига не понимаю, нам препод говорил, что без разницы напишешь хоть так iostream.h хоть так iostream эффект один и тот же, оказывается нет?

Получается Вот эту строку
Цитата:
using namespace std;
надо раскидывать по всем h и cpp?

Последний раз редактировалось sir.andrey; 10.07.2011 в 09:30.
sir.andrey вне форума Ответить с цитированием
Старый 10.07.2011, 09:31   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

дело в using namespace std;
функции и классы стандартной библиотеки С++ находятся в просранстве имен std(исключение Borland 3.11)
Цитата:
что без разницы напишешь хоть так iostream.h хоть так iostream эффект один и тот же, оказывается нет?
с .h не является частью современного стандарта, и в будущем таких файлов может просто не быть.
(меня лично gcc посылает если использую старый стандарт)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.07.2011, 09:35   #7
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
дело в using namespace std;
функции и классы стандартной библиотеки С++ находятся в просранстве имен std(исключение Borland 3.11)с .h не является частью современного стандарта, и в будущем таких файлов может просто не быть.
(меня лично gcc посылает если использую старый стандарт)
Ясно, большое спасибо!

И еще вопрос:
Когда включаешь самопальные классы, допустим "MyClass.h"
.h писать надо?

Можете не отвечать, я сам уже понял.
без .h ни куда (при создании классов)

Последний раз редактировалось Stilet; 10.07.2011 в 10:21.
sir.andrey вне форума Ответить с цитированием
Старый 10.07.2011, 09:56   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

всетаки отвечу, у вас файл называется *.h, то так и надо писать.

iostream(без .h) такой файл есть, потому и находится.

но вообще не нужно брать пример с stdcpp инклюдников.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.07.2011, 10:02   #9
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
всетаки отвечу, у вас файл называется *.h, то так и надо писать.

iostream(без .h) такой файл есть, потому и находится.

но вообще не нужно брать пример с stdcpp инклюдников.
И после вашего ответа у меня снова появился вопрос:
Один и тот же include файл подразделяется на два типа с .h и без .h?
Пользуйся каким хочешь?
sir.andrey вне форума Ответить с цитированием
Старый 10.07.2011, 10:08   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Один и тот же include файл подразделяется на два типа с .h и без .h?
в большинстве случаев стандартные от С++ да, есть и те и те.
но не стоит надеятся на дублирование.
стоит знать насколько компилятор соответствует стандарту.
если компиль не поддерживает стандарт(без .h, это Borland C++ 3.11), то пишите с .h, в остальных случаях пишите как положено(ибо gcc например пошлет при использовании iostream.h(но это только для стандартных библиотек))

с дополнительными инклюлами, уж как назвали так назвали. в 90% случаев всегда с .h(windows.h), хотя бывют еще .hh, .hpp.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
String. Noname11 Помощь студентам 0 30.04.2011 19:17
String большого размера, более 255 String[255] bitSoft Общие вопросы Delphi 9 28.03.2010 19:45
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
String fdbdfbfd Общие вопросы C/C++ 0 24.11.2009 23:14
string medik Помощь студентам 12 29.10.2007 17:33