Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Классы ресурсоёмких объектов 
:(
    Опции темы
Oleg_Ci
Дата 9.11.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



слово virtual убрать можно, оно для случая если наследование от этого класса будет, подробности в книге лучше почитать, я хорошо не объясню.
Кстати только-что доделал класс для себя, можеш его взять, ещё она у меня с русскими буквами теперь работает.
И уменя ошибок невыдаёт MVS2003.
Прога версия№ 4 :
Код

#include <iostream>
#include <locale>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

class Word
{
private:
    vector<string> array; // динамический массив слов
    
public:
    string end_str; // символ разделитель выводимый при выводе слов в поток ("\n")

    Word() :end_str("\n") {}; // кнструктор по умолчанию
    Word( const string & str ); // кoнструктор
    Word( const char * str );
    Word( const Word & w ); // конструктор копирования
    ~Word(); // деструктор

    Word & operator=( const Word &w ); // оператор присвоения
    Word operator+( const Word & w ); // складывание массивов слов
    Word operator+( const string & str ); // прибавление слов тип - string
    Word operator+( const char * str ); // добавление слов тип - char*
    Word & operator+=( const Word & w );
    Word & operator+=( const string & str );
    Word & operator+=( const char * str );
    friend Word & operator+( const string & str, Word & w );
    friend Word & operator+( const char * str, Word & w );
    const string & operator[](  const size_t pos )const;
    string & operator[](  const size_t pos ); // получение слова по индексу

    friend istream & operator>>( istream & in, Word & w ); // чтение слов из потока
    friend ostream & operator<<( ostream & out, const Word & w ); // вывод слов в поток

    void erase( const size_t begin = 0, const size_t size = 1 ); // удаление слов c позиции - begin, количеством - size
    void clear(); // удаление всех слов
    void push_str( const string & str ); // добавление слов из строки
    size_t size() { return array.size(); } // количество слов в массиве
    const size_t size()const { return array.size(); }
};


////////// конструктры /////////////////////////////
Word::Word( const string & str ) :end_str("\n"){
    *this += str;
}
/////////////////////////
Word::Word( const Word & w ) :end_str("\n"){
    *this = w;
}
////////////////////////
Word::Word( const char * str ) :end_str("\n"){
    *this += str;
}
////////////////////// деструктор ///////////////
Word::~Word(){
    array.clear();
}
////////// операторы ///////////////////////////////
Word & Word::operator=( const Word &w ){
    if( this == &w ) return *this;
    array.clear();
    copy( w.array.begin(), w.array.end(), back_inserter( this->array));
    return *this;
}
///////////////////////////////////
Word Word::operator+( const string & str ){
    Word w;
    w.push_str( str );
    return w;
}
//////////////////////////////////
Word Word::operator+( const char * str ){
    return Word::operator +( string(str));
}
//////////////////////////////////
Word Word::operator+( const Word & w ){
    Word wd;
    copy( w.array.begin(), w.array.end(), back_inserter( wd.array ));
    return wd;
}
/////////////////////////////////
Word & operator+( const string & str, Word & w ){
    w.push_str( str );
    return w;
}
/////////////////////////////////
Word & operator+( const char * str, Word & w ){
    w.push_str( string(str));
    return w;
}
/////////////////////////////////
Word & Word::operator+=( const Word & w ){
    array.reserve( array.size() + w.array.size());
    copy( w.array.begin(), w.array.end(), back_inserter( array ));
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const string & str ){
    this->push_str( str );
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const char * str ){
    *this += string( str );
    return *this;
}
//////////////////////////////////
istream & operator>>( istream & in, Word & w ){
    string str;
    getline( in, str ); // читаем из потока строку
    w.push_str( str ); // записываем слова в массив
    return in;
}
//////////////////////////////////
ostream & operator<<( ostream & out,const Word & w ){
    for( size_t i=0; i<w.size(); i++ )
        out << w[i] << w.end_str; // выводим строки в поток с символом разделителем
    return out;
}
////////////////////////////////////
const string & Word::operator[](  const size_t pos )const{
    return array[pos]; 
}
////////////////////////////////////
string & Word::operator[](  const size_t pos ){
    return array[pos]; // возвращаем слово по индексу в массиве
}
/////////// функции ////////////////////////////////////
void Word::push_str( const string & str ){
    //string s = ToOem( str );
    locale loc(".866");
    string::size_type begin, pos = 0;
    do{
        begin = pos; // начало слова
        for(; str[begin] && !isalpha( str[begin], loc ); begin++ );
        for( pos = begin; str[begin] && isalpha( str[pos], loc ); pos++ ); // конец слова - pos
        array.push_back(string( str, begin, pos - begin ));
    }while( pos < str.size() && pos != begin );
}

///////////////////////////////////
void Word::erase( const size_t begin, const size_t size ){
    array.erase( array.begin()+begin, array.begin() + begin + size );
}
///////////////////////////////////
void Word::clear(){
    array.clear();
}
//////////  MAIN ///////////
int main(){
    Word w("ad ads");
    w += w + "gdgdgd";
    cout << w;
    w.clear();
    cin >> w;
    cout << "\n\n" << w;
    fflush(stdin);
    getchar();
    return 0;
}

PM MAIL   Вверх
Mcicool
Дата 9.11.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Что такое locale loc(".866"); ??
Вообщк что нам дает библиотека <locale> ??
PM MAIL   Вверх
Oleg_Ci
Дата 10.11.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Цитата(Mcicool @  10.11.2006,  01:20 Найти цитируемый пост)
Что такое locale loc(".866");
Код

locale loc(".866");

// здесь определяем принадлежность символа к русскому и латинскому алфавиту
// если без локали, то определять будем только для латинского алфавита.
isalpha( str[begin], loc )

PM MAIL   Вверх
Mcicool
Дата 10.11.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Dev-C++ выдает такую ошибку:
prog8.cpp:2: locale: No such file or directory
PM MAIL   Вверх
Oleg_Ci
Дата 10.11.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Ну токда "убери локаль", подключи библиотеку <ctype.h> или <cctype>
Код

//#include <locale>  << в место этого :
#include <cctype>
...

// locale loc(".866"); << убрать
// ...  isalpha( str[begin], loc ) ...  << и вместо этого :

isalpha( str[begin] ) // вот это.

Только теперь с русскими буквами не будет работать. smile 
PM MAIL   Вверх
Mcicool
Дата 10.11.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Я так сделал, только теперь 5 ошибок ))
161: implicit declaration of function `int getchar(...)'
160: implicit declaration of function `int fflush(...)'
160: for each function it appears in.)
160: (Each undeclared identifier is reported only once
160: `stdin' undeclared (first use this function)
In function `int main()':
PM MAIL   Вверх
Oleg_Ci
Дата 10.11.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Эту программу попробуй на своём компиляторе.
Код

#include <iostream>
#include <cctype>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;


class Word
{
private:
    vector<string> array; // динамический массив слов
    
public:
    string end_str; // символ разделитель выводимый при выводе слов в поток ("\n")

    Word() :end_str("\n") {}; // кнструктор по умолчанию
    Word( const string & str ); // кoнструктор
    Word( const char * str );
    Word( const Word & w ); // конструктор копирования
    ~Word(); // деструктор

    Word & operator=( const Word &w ); // оператор присвоения
    Word operator+( const Word & w ); // складывание массивов слов
    Word operator+( const string & str ); // прибавление слов тип - string
    Word operator+( const char * str ); // добавление слов тип - char*
    Word & operator+=( const Word & w );
    Word & operator+=( const string & str );
    Word & operator+=( const char * str );
    friend Word & operator+( const string & str, Word & w );
    friend Word & operator+( const char * str, Word & w );
    const string & operator[](  const size_t pos )const;
    string & operator[](  const size_t pos ); // получение слова по индексу

    friend istream & operator>>( istream & in, Word & w ); // чтение слов из потока
    friend ostream & operator<<( ostream & out, const Word & w ); // вывод слов в поток

    void erase( const size_t begin = 0, const size_t size = 1 ); // удаление слов c позиции - begin, количеством - size
    void clear(); // удаление всех слов
    void push_str( const string & str ); // добавление слов из строки
    size_t size() { return array.size(); } // количество слов в массиве
    const size_t size()const { return array.size(); }
};


////////// конструктры /////////////////////////////
Word::Word( const string & str ) :end_str("\n"){
    *this += str;
}
/////////////////////////
Word::Word( const Word & w ) :end_str("\n"){
    *this = w;
}
////////////////////////
Word::Word( const char * str ) :end_str("\n"){
    *this += str;
}
////////////////////// деструктор ///////////////
Word::~Word(){
    array.clear();
}
////////// операторы ///////////////////////////////
Word & Word::operator=( const Word &w ){
    if( this == &w ) return *this;
    array.clear();
    copy( w.array.begin(), w.array.end(), back_inserter( this->array));
    return *this;
}
///////////////////////////////////
Word Word::operator+( const string & str ){
    Word w;
    w.push_str( str );
    return w;
}
//////////////////////////////////
Word Word::operator+( const char * str ){
    return Word::operator +( string(str));
}
//////////////////////////////////
Word Word::operator+( const Word & w ){
    Word wd;
    copy( w.array.begin(), w.array.end(), back_inserter( wd.array ));
    return wd;
}
/////////////////////////////////
Word & operator+( const string & str, Word & w ){
    w.push_str( str );
    return w;
}
/////////////////////////////////
Word & operator+( const char * str, Word & w ){
    w.push_str( string(str));
    return w;
}
/////////////////////////////////
Word & Word::operator+=( const Word & w ){
    array.reserve( array.size() + w.array.size());
    copy( w.array.begin(), w.array.end(), back_inserter( array ));
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const string & str ){
    this->push_str( str );
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const char * str ){
    *this += string( str );
    return *this;
}
//////////////////////////////////
istream & operator>>( istream & in, Word & w ){
    string str;
    getline( in, str ); // читаем из потока строку
    w.push_str( str ); // записываем слова в массив
    return in;
}
//////////////////////////////////
ostream & operator<<( ostream & out,const Word & w ){
    for( size_t i=0; i<w.size(); i++ )
        out << w[i] << w.end_str; // выводим строки в поток с символом разделителем
    return out;
}
////////////////////////////////////
const string & Word::operator[](  const size_t pos )const{
    return array[pos]; 
}
////////////////////////////////////
string & Word::operator[](  const size_t pos ){
    return array[pos]; // возвращаем слово по индексу в массиве
}
/////////// функции ////////////////////////////////////
void Word::push_str( const string & str ){
    //string s = ToOem( str );
    //locale loc(".866");
    string::size_type begin, pos = 0;
    do{
        begin = pos; // начало слова
        for(; str[begin] && !isalpha( str[begin] ); begin++ );
        for( pos = begin; str[begin] && isalpha( str[pos] ); pos++ ); // конец слова - pos
        array.push_back(string( str, begin, pos - begin ));
    }while( pos < str.size() && pos != begin );
}

///////////////////////////////////
void Word::erase( const size_t begin, const size_t size ){
    array.erase( array.begin()+begin, array.begin() + begin + size );
}
///////////////////////////////////
void Word::clear(){
    array.clear();
}
//////////  MAIN ///////////
int main(){
    Word w("ad ads");
    w += w + "gdgdgd";
    cout << w;
    w.clear();
    cin >> w;
    cout << "\n\n" << w;
    cin.sync();
    cin.get();
    return 0;
}

PM MAIL   Вверх
Mcicool
Дата 10.11.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Урааа, скомпилилась! Спасибо!
Только вот что непонятно:
Я ее включаю, а там на экране: 
ad
ads
gdgdgd
Потом ввожу любое слово, он его копирует, и все.
Что она делать вообще должна?
PM MAIL   Вверх
Oleg_Ci
Дата 10.11.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



так ты вводи не одно слово а несколько сразу, скажем "asd adsd sf  s d d d d".
или код из функции main из других программ возьми, там где с файлами...
да я вроде объяснял чего класс умеет делать, скажем из файла читать слова,
складыват Word со строками, удаляет строки(кстати последнюю версию функции удаления я не проверил... извиняй если что...)
PM MAIL   Вверх
Mcicool
Дата 10.11.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



    Word w("ad ads");
    w += w + "gdgdgd";

А что нам дают эти наборы букв.
Ведь надо, чтобы пользователя сам вводил название файла.
И еще, не мог бы ты прокомментировать, что делает каждый конструктор, деструктор. оператор.
блин, мне даже стыдно каждый раз все новые вопросы задавать, но ничего не поделаешь ((
PM MAIL   Вверх
Oleg_Ci
Дата 11.11.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Ну так нормально ?
здесь ещё исправил ошибки которые нашёл smile 
Код

#include <iostream>
#include <fstream>
#include <cctype>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

class Word
{
private:
    vector<string> array; // динамический массив слов
    
public:

    Word() :end_str("\n") {}; // кнструктор по умолчанию
    Word( const string & str ); // кoнструктор принимающий строку string
    Word( const char * str ); // кoнструктор принимающий строку char*
    Word( const Word & w ); // конструктор копирования
    ~Word(); // деструктор

    Word & operator=( const Word &w ); // оператор присвоения
    Word operator+( const Word & w ); // складывание массивов слов
    Word operator+( const string & str ); // прибавление слов тип - string
    Word operator+( const char * str ); // добавление слов тип - char*
    Word & operator+=( const Word & w ); // добавление в массив слов из другого массива
    Word & operator+=( const string & str ); // добавление слов из строки string
    Word & operator+=( const char * str ); // добавление слов из строки char *
    friend Word operator+( const string & str, Word & w ); // складывание Word и строки string
    friend Word operator+( const char * str, Word & w ); // складывание Word и строки char *
    const string & operator[](  const size_t pos )const; // получение константного слова по индексу
    string & operator[](  const size_t pos ); // получение слова по индексу

    friend istream & operator>>( istream & in, Word & w ); // чтение слов из потока
    friend ostream & operator<<( ostream & out, const Word & w ); // вывод слов в поток

    void erase( const size_t begin = 0, const size_t size = 1 ); // удаление слов c позиции - begin, количеством - size
    void clear(); // удаление всех слов
    void push_str( const string & str ); // добавление слов из строки string
    void push_str( const char * str ); // добавление слов из строки char *
    size_t size() { return array.size(); } // количество слов в массиве
    const size_t size()const { return array.size(); }
    string end_str; // символ разделитель выводимый при выводе слов в поток ("\n")
};


////////// конструктры /////////////////////////////
Word::Word( const string & str ) :end_str("\n"){ // симол разделитель при выводе слов в поток = "\n"
    push_str( str ); // добавляем в массив слова из строки string str
}
/////////////////////////
Word::Word( const Word & w ) :end_str("\n"){
    array.reserve(w.array.size());// резервируем память для предотвращения перераспределения(необязятельно)
    array = w.array; // копируем слова
}
////////////////////////
Word::Word( const char * str ) :end_str("\n"){
    push_str( str ); // добавляем в массив слова из строки char * str
}
////////////////////// деструктор ///////////////
Word::~Word(){
    array.clear(); // очистка массива
}
////////// операторы ///////////////////////////////
Word & Word::operator=( const Word &w ){
    if( this == &w ) return *this; // ели пытаемся присвоить "сябя самому себе"
    array.clear(); // удаляем все слова из массива слов
    array.reserve(w.array.size());// резервируем память для предотвращения перераспределения(необязятельно)
    array = w.array; // копируем слова
    return *this;
}
///////////////////////////////////
Word Word::operator+( const string & str ){
    Word w( *this ); // копируем слова в новый массив
    w.push_str( str ); // добавляем слова в новый массив
    return w; // возвращиаем новый массив
}
//////////////////////////////////
Word Word::operator+( const char * str ){
    Word w( *this ); // тоже сомое что и в Word Word::operator+( const string & str )
    w.push_str( str );
    return w;
}
//////////////////////////////////
Word Word::operator+( const Word & w ){
    Word wd( *this );
    copy( w.array.begin(), w.array.end(), back_inserter( wd.array )); // добавляем слова в новый массив
    return wd;
}
/////////////////////////////////
Word operator+( const string & str, Word & w ){
    Word wd( w );
    wd.push_str( str );
    return wd;
}
/////////////////////////////////
Word operator+( const char * str, Word & w ){
    Word wd( w );
    wd.push_str( str );
    return wd;
}
/////////////////////////////////
Word & Word::operator+=( const Word & w ){
    array.reserve( array.size() + w.array.size());// резервируем память для предотвращения перераспределения(необязятельно)
    copy( w.array.begin(), w.array.end(), back_inserter( this->array ));
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const string & str ){
    push_str( str );
    return *this;
}
//////////////////////////////////
Word & Word::operator+=( const char * str ){
    push_str( str );
    return *this;
}
//////////////////////////////////
istream & operator>>( istream & in, Word & w ){
    string str;
    getline( in, str ); // читаем из потока строку
    w.push_str( str ); // записываем слова в массив
    return in;
}
//////////////////////////////////
ostream & operator<<( ostream & out,const Word & w ){
    for( size_t i=0; i<w.size(); i++ )
        out << w[i] << w.end_str; // выводим строки в поток с символом разделителем
    return out;
}
////////////////////////////////////
const string & Word::operator[](  const size_t pos )const{
    return array[pos];
}
////////////////////////////////////
string & Word::operator[](  const size_t pos ){
    return array[pos]; // возвращаем слово по индексу в массиве
}
/////////// функции ////////////////////////////////////
void Word::push_str( const string & str ){
    string::size_type begin, pos = 0; // начало и конец слова в строке
    do{
        begin = pos;
        for(; str[begin] && !isalpha( str[begin] ); begin++ ); // начало слова
        for( pos = begin; str[begin] && isalpha( str[pos] ); pos++ ); // конец слова - pos
        array.push_back(string( str, begin, pos - begin ));
    }while( pos < str.size() && pos != begin );
}
//////////////////////////////////
void Word::push_str( const char * str ){
    int begin, pos = 0; // начало и конец слова в строке
    do{
        begin = pos; // начало слова
        for(; str[begin] && !isalpha( str[begin] ); begin++ ); // поиск начала слова - begin
        for( pos = begin; str[begin] && isalpha( str[pos] ); pos++ ); // поиск конца слова - pos
        array.push_back(string( &str[begin], pos - begin )); // добавляем слово в массив
    }while( str[pos] && pos != begin ); // считываем слова из строки пока есть непрочитанные буквы
}
///////////////////////////////////
void Word::erase( const size_t begin, const size_t size ){
    array.erase( array.begin()+begin, array.begin() + begin + size );
}
///////////////////////////////////
void Word::clear(){
    array.clear();
}
//////////  MAIN ///////////
int main(){
    // проверки
    Word w("ad ads");// создаём массив слов ( 2 слова "as" и "asd" )
    w += w + "ssssss www"; // прибавляем к массиву Word такойже массив и две строки
    w += "fgf"; // добавляем "fdf" в массив
    cout << w; // выводим все слова, а между словами вставляем символ Word.end_str = "\n"
    w.end_str = ", ";
    w.erase( 1 ); // удаляем второе слово ( нумерация с 0 )
    w.erase( 3, 2 ); // удаляем два слова, четвёртое и пятое
    cout << "\n\n" << w; // вывод слов через запятую
    w.end_str = "\n";
    w.clear(); // удаляем все слова из массива
    cout << "\n\nEnter string > "; // "введите строку > "
    cin >> w; // считываем строку(слова) с консоли
    cout << "\n\n" << w; // выводим считанные слова на консоль

    Word s(w); // проверяем конструктор копирования
    s.end_str = ", ";
    cout << "\n" << s; // вывод скопированных слов

    // считывание слов из файла
    ifstream file;
    cout << "\n\nEnter filename > "; // "Введите имя файла"
    string name;
    cin >> name;
    file.open( name.c_str() ); // открываем файл name
    if( !file.is_open()){ // если не открылся
        cout << "Error open file " << name << " !!!";
        cin.sync();
        cin.get();
        return 0; // выход из программы
    }
    w.clear(); // удаляем слова из массива
    while( file >> w ); // считываем строки(слова) пока считывается
    cout << w; // выводим слова которые считали из файла

    cin.sync(); // очистка буфера ввода
    cin.get(); // пауза
    return 0;
}

PM MAIL   Вверх
Mcicool
Дата 11.11.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Код

    Word w("ad ads");
    w += w + "ssssss www"; 
    w += "fgf"; 
    cout << w; Word.end_str = "\n"
    w.end_str = ", ";
    w.erase( 1 ); 
    w.erase( 3, 2 ); 
    cout << "\n\n" << w; 


А зачем нам нужен этот участок кода? Зачем мы прибавляем какие то буквы, потом стираем? И когда, я имя файла вбиваю, программа просто выходит... Че то я вообщене пойму, как она работает... Извините конечно...

Добавлено @ 13:02 
аа, просто какое бы имя файла я не ввел, все равно программа выходит.
PM MAIL   Вверх
Oleg_Ci
Дата 11.11.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Цитата(Mcicool @  11.11.2006,  17:00 Найти цитируемый пост)
А зачем нам нужен этот участок кода?
Это просто тестирование класса, доказательсто его работоспособности,  можеш этот код выкинуть.
Цитата(Mcicool @  11.11.2006,  17:00 Найти цитируемый пост)
просто какое бы имя файла я не ввел, все равно программа выходит.

Файл у тебя в тойже папке что и исходники программы?
Вообще-то у меня нормально открывает файлы, и читает слова от туда.
И вводишь имена файлов с расширением ?
Например есть текстовый файл, в папке с тектом программы, называется "text.txt"  , запускаем программу, после запроса "Enter filename > "  вводим название файла "text.txt" ( без ковычек ).
Ну вот ты всё также делаешь ?
PM MAIL   Вверх
Mcicool
Дата 12.11.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



У меня так :
Enter filename> Пишу: text.txt
//Файл находится в той же директории.
И в итоге ничего не делается... странно.
Кстати, а вы мне не посоветуйете нормальный компилятор, а тоя думаю, в этом тоже проблема.
PM MAIL   Вверх
Oleg_Ci
Дата 12.11.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Попробуй исправить
Код

int main()
...
// в место этого :
if( !file.is_open()){ // если не открылся

// вот так попробуй :
if( !file ){ // если не открылся

Кстати эти штуки удалить лучше, они неправильно smile  размер резервируют.
Код

array.reserve( array.size() + w.array.size());// резервируем память для предотвращения перераспределения(необязятельно)

Кстати компилятор у меня Microsoft visual studio 2003 ( mvs2003 ).
какие хорошие незнаю, да мне и ненадо, я учись ещё.

Это сообщение отредактировал(а) Олег4 - 12.11.2006, 17:03
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0724 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.