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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 22:13   #11
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Regex^ regex = gcnew Regex( pattern ); //создается объект класса Regex? а что за символ ^ и почему gcnew а не просто new и что такое pattern?
Serjuk вне форума Ответить с цитированием
Старый 19.05.2010, 06:24   #12
ev_tea
 
Регистрация: 18.05.2010
Сообщений: 7
По умолчанию

3. pattern - образец (строка содержащая шаблон)
2. скорее всего определен такой метод в классе
1. в стандарте ^ - побитовое "исключающее или" однако судя по контексту операцию перегрузили и получилось определение указателя (аналогично *)
Вообще, пути Микрософт неисповедимы.
Используй pcre.h там все полюдски например здесь хороший пример с описанием
ev_tea вне форума Ответить с цитированием
Старый 22.05.2010, 13:46   #13
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

вообщем посидел , почитал и понял, что через регулярные выражения тяжеловато пока
Придумал идти по другому способу:
Сделать класс String в нем который будет обслуживать этот класс .В этом классе перезагрузить операции >> << +(конкатенация)
соответственно когда идем по файлу пропускаем название classa и свойства public,private,protected находим строчку и с помощтью операции конкатенации добавляем туда значения
Например:
class A{
private:
int a;
};
доходим до строчки int a , вводим значение и с помощью операции конкатенации добавляем туда и получаем int a = 20;
Собственно код :
Код:
#include <iostream>
#include<cstdlib>
#include<cctype>
#include<cstring>
#include <new>
#include <fstream>
using namespace std;
/*enum types { DELIMITER=1,VARIABLE,NUMBER};
const int NUMVARS=26;*/
/*template <class Ptype> class parser{
    char * exp_ptr; //ссылается на строку
    char * token[80]; //хранит текущую лексему
    char tok_type; //Хранит тип лексемы
    Ptype vars[NUMVARS] //хранит значения переменных
    void */
class StrType {
    char *p;
    int size;
    public:
    StrType ();
    StrType (char*str);
    StrType(const StrType &o); //конструктор копирования.
    ~StrType (){delete [] p;}
    friend ostream &operator<<(ostream &stream,StrType &o);
    friend istream &operator>>(istream &stream,StrType &o);
    StrType operator=(StrType &o);//присваивание объекта класса StrType
    StrType operator=(char *s); //присваивание строки, взятой в кавычки
    StrType operator+(StrType &o); //конкатенация объектов
    //операции сравнения объектов класса StrType и строк, взятых в кавычки
    int operator==(char *s ){ return !strcmp(p,s);}
    int operator!=(char*s){return strcmp(p,s);}
    int strsize() { return strlen(p);}//возвращает размер строки
};
//вывод строки
ostream &operator << (ostream &stream ,StrType &o)
{
    stream << o.p;
    return stream;
}
//ввод строки
istream &operator >> (istream &stream ,StrType &o)
{
    char t[255];
    int len;
    stream.getline(t,255);
    len=strlen(t)+1;
    if (len>o.size ){
        delete [] o.p;
        try {
            o.p=new char[len];
        }
        catch (bad_alloc xa){
            cout <<"Ошибка при распределении памяти\n";
            exit(1);
        }
        o.size=len;
    }
    strcpy(o.p,t);
    return stream;
}
//Конкатенация двух объектов
StrType StrType::operator+{StrType &o)
{
    int len;
    StrType temp;
    delete [] temp.p;
    len=strlen (o.p) + strlen(p) +1;
    temp.size=len;
    try{
        temp.p=new char[len];
    } catch (bad_alloc xa) {
        cout <<"Ошибка при распределении памяти\n";
        exit(1);
    }
    strcpy(temp.p,p);
    strcat(temp.p,o.p);
    return temp;
}


int main()
{
	setlocale(LC_ALL,"Russian");
	ifstream input_file("D:\const.h"); //задаем название файла, который будем выводить на экран
	char name[255];
	/*считываем файл до конца*/
	/while(!input_file.eof())
	{
	input_file.getline(name,sizeof(name));
	cout<<name<<endl;
	}


	system("pause");
}
но я не могу сообразить как можно читать файл построчно т.е.
Код:
class A{//пропускаем
private ://пропускаем
int a ;//доходим этой строчки вводим значение и применяем операцию конкатенации и идем дальше
int b;//аналогично с предыдущей и тд.
float c;
char r;
public://пропускаем..
int e;
};
Serjuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подстановка символов при выборе определенной строки в ComboBox konsul_81 Помощь студентам 2 17.05.2010 22:57
Чтение строки из файла kroŧ Общие вопросы Delphi 4 14.05.2010 15:42
Как найти область Rect определенной строки в ListBox? Artik Компоненты Delphi 0 11.06.2009 19:16
Чтение строки limon Помощь студентам 3 08.09.2008 14:36
Чтение строки... prizrak1390 Общие вопросы Delphi 2 28.02.2008 11:18