Ничего не понимаю...)
Итак, bc3.1.
Читаю книжку Липмана. Надо использовать stl.
Решила одну задачку там сделать.
пишу:
#include <string>
А он ругается что не знает такого...((
Пишу вместо #include <iostream.h>:
#include <iostream>
тоже самое. ((
Может настройки надо подправить?
(не #include <string> а #include <string.h>)
пытаюсь объявить переменную:
он все равно не знает. (
а на
пытаюсь объявить переменную:
он все равно не знает. (
а на
Посмотри свой string.h и раскоментируй все, что относится к string.stl или вставь #include <путь до string.stl\string.stl>
пытаюсь объявить переменную:
Когда я экспериметировал с gcc, прокатывало #include <string> без ".h".
Когда я экспериметировал с gcc, прокатывало #include <string> без ".h".
Посмотри мой первый пост. С того все и началось, что он #include <string> не узнает.
пытаюсь объявить переменную:
он все равно не знает.
A esli string napisat s bolsoj bukvy:
String ch;
A esli string napisat s bolsoj bukvy:
String ch;
А может даже надо char str[256]?
Старая система тут надо название файлов писать полностью
(не #include <string> а #include <string.h>)
string - это не краткое название string.h
Посмотри свой string.h и раскоментируй все, что относится к string.stl или вставь #include <путь до string.stl\string.stl>
Для начала неплохо бы было заглянуть в string.h самому.
Файлы string и string.h вообще ничего общего не имеют.
string.h - это наследство от С, в нем объявлены С-style методы (strlen, strcpy и т.п.) для работы с С-style строками (char[]).
string - это STL, в нем объявлен и определен шаблонный класс std::basic_string и объявлен класс std::string, как инстанирование класса std::basic_string соотв. параметрами шаблона:
typedef basic_string<char, char_traits<char>, allocator<char> > string
Что же касается bc3.1, то если имеется в виду Borland C++ 3.1, то я не уверен, что он вообще поддерживает шаблоны, а сл-но STL.
Нужно что-то поновее, к примеру тот же gcc.
string - это не краткое название string.h
Для начала неплохо бы было заглянуть в string.h самому.
Файлы string и string.h вообще ничего общего не имеют.
string.h - это наследство от С, в нем объявлены С-style методы (strlen, strcpy и т.п.) для работы с С-style строками (char[]).
string - это STL, в нем объявлен и определен шаблонный класс std::basic_string и объявлен класс std::string, как инстанирование класса std::basic_string соотв. параметрами шаблона:
typedef basic_string<char, char_traits<char>, allocator<char> > string
Что же касается bc3.1, то если имеется в виду Borland C++ 3.1, то я не уверен, что он вообще поддерживает шаблоны, а сл-но STL.
Нужно что-то поновее, к примеру тот же gcc.
Вот не поленился заглянул (кстати еще до того, как)
*/
/*
* C/C++ Run Time Library - Version 11.0
*
* Copyright (c) 2002 by Borland Software Corporation
* All Rights Reserved.
*
*/
#if !defined(__cplusplus)
# include <_str.h>
#else /* __cplusplus */
# include <_str.h>
# if defined(__USING_STD_NAMES__)
# ifdef _USE_OLD_RW_STL
# include[list=1]
# else
# include <stlport/string>
# endif
# endif /* __USING_STD_NAMES__ */
#endif
//Это Builder v6.0
*/
/*
* C/C++ Run Time Library - Version 11.0
*
* Copyright (c) 2002 by Borland Software Corporation
* All Rights Reserved.
*
*/
#if !defined(__cplusplus)
# include <_str.h>
#else /* __cplusplus */
# include <_str.h>
# if defined(__USING_STD_NAMES__)
# ifdef _USE_OLD_RW_STL
# include[list=1]
# else
# include <stlport/string>
# endif
# endif /* __USING_STD_NAMES__ */
#endif
//Это Builder v6.0
Что-то я такого там не заметила.:angel:
Пол ночи устанавливала VC++.NET, чтоб он провалился. Установила, пробую написать что-то (и ведь надо проект, блин, еще создавать :devil: ), а он мне тоже ошибку. *?%=$ /*непереводимая игра слов*/.
Знакомый программер сказал, что надо обязательно using namespase std писать...попробую сегодня ночью.
Блин, программа в голове сидит, а мне даже не начать.(
Вот не поленился заглянул (кстати еще до того, как)
*/
/*
* C/C++ Run Time Library - Version 11.0
*
* Copyright (c) 2002 by Borland Software Corporation
* All Rights Reserved.
*
*/
#if !defined(__cplusplus)
# include <_str.h>
#else /* __cplusplus */
# include <_str.h>
# if defined(__USING_STD_NAMES__)
# ifdef _USE_OLD_RW_STL
# include[list=1]
# else
# include <stlport/string>
# endif
# endif /* __USING_STD_NAMES__ */
#endif
//Это Builder v6.0
Ну что могу сказать...
Значит кто-то решил, что стандарт не для него...
Либо решил подогнать под стандарт таким способом.
1.5 Standard C library headers:
1 For compatibility with the Standard C library, the C++ Standard library provides the 18 C headers, as shown in Table 1:
Table 1--C Headers
<assert.h>
<iso646.h>
<setjmp.h>
<stdio.h>
wchar.h>
<ctype.h>
<limits.h>
<signal.h>
<stdlib.h>
<wctype.h>
<errno.h>
<locale.h>
<stdarg.h>
<string.h>
<float.h>
<math.h>
<stddef.h>
<time.h>
Пол ночи устанавливала VC++.NET, чтоб он провалился. Установила, пробую написать что-то (и ведь надо проект, блин, еще создавать :devil: ), а он мне тоже ошибку. *?%=$ /*непереводимая игра слов*/.
Честно говоря не вижу ничего сложного ни в установке, ни в создании проекта.
Знакомый программер сказал, что надо обязательно using namespase std писать...
Конечно, надо указывать область видимости, но я бы не рекомендовал использовать using namespase, лучше указывать явно std::string, std::cout и т.д.
Честно говоря не вижу ничего сложного ни в установке, ни в создании проекта.
Бебебе.
Не сложно. Долго.
К тому же у меня книжек по среде этой нету, сидела наугад тыкала, разбиралась.
А проект из-за 5 строк делать не хочется.
Конечно, наверняка есть весомые причины которые мне, как начинающему, пока недоступны для понимания...и компилировать только проекты - это дисциплина, но ведь это просто мое имхо.
Почему?
Проще же один раз написать и не париться...
Почему?
Проще же один раз написать и не париться...
Лучше один немного "попариться" вначале, чем долго и нудно париться потом.
Что же касается bc3.1, то если имеется в виду Borland C++ 3.1, то я не уверен, что он вообще поддерживает шаблоны, а сл-но STL.
Может быть и правдой. Сколько ему лет-то?
Может быть и правдой. Сколько ему лет-то?
Для bc3.1
/*выдержки из strng.h
class _CLASSTYPE String : public Sortable
{
public:
String( const char _FAR * = "" );
String( const String _FAR & );
virtual ~String()
{
delete theString;
}
String& operator = ( const String _FAR & );
operator const char _FAR *() const;
virtual int isEqual( const Object _FAR & ) const;
virtual int isLessThan( const Object _FAR & ) const;\
virtual classType isA() const
{
return stringClass;
}
virtual char _FAR *nameOf() const
{
return "String";
}
virtual hashValueType hashValue() const;
virtual void printOn( ostream _FAR & ) const;
private:
sizeType len;
char _FAR *theString;
};
*/
String myString;
Для bc3.1
/*выдержки из strng.h
class _CLASSTYPE String : public Sortable
{
public:
String( const char _FAR * = "" );
String( const String _FAR & );
virtual ~String()
{
delete theString;
}
String& operator = ( const String _FAR & );
operator const char _FAR *() const;
virtual int isEqual( const Object _FAR & ) const;
virtual int isLessThan( const Object _FAR & ) const;\
virtual classType isA() const
{
return stringClass;
}
virtual char _FAR *nameOf() const
{
return "String";
}
virtual hashValueType hashValue() const;
virtual void printOn( ostream _FAR & ) const;
private:
sizeType len;
char _FAR *theString;
};
*/
String myString;
Это не STL, это вообще не стандарт С++
Это не STL, это вообще не стандарт С++
Зато так на самом деле в BC3.1