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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли попроще записывать в структуру? 
V
    Опции темы
Killer_13
Дата 13.10.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно например записывать в структуру из файла как-то попроще? Я имею введу в цыкле или как то по другому.
Мне не нравиться код. Насколько смотрел, то доступ к элементам структуры осуществляется через имя, а через идентификатор нельзя?
Нпример вот так
liste[i]

Код

void Anmeld(void){

    struct Anmeldung liste;

    ifstream csv("anmeldung.csv");

    getline(csv,liste.Nachname,'\n');
    getline(csv,liste.Vorname,'\n');
    getline(csv,liste.Email,'\n');
    getline(csv,liste.Matrikelnummer,'\n');
    getline(csv,liste.Studienrichtung,'\n');
    getline(csv,liste.Semester,'\n');
    getline(csv,liste.G1name,'\n');
    getline(csv,liste.G1vorname,'\n');
    getline(csv,liste.Anmerkung,'\n');
}


Пасиб.
PM MAIL   Вверх
Sartorius
Дата 13.10.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 Если все поля строки, можешь сделать анонимный union из своей структуры и массива строк
PM MAIL ICQ   Вверх
Killer_13
Дата 13.10.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



понятненько, так и думал, что попроще не будет. smile
PM MAIL   Вверх
azesmcar
Дата 13.10.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(Killer_13 @  13.10.2010,  14:26 Найти цитируемый пост)
Нпример вот так
liste[i]

ну конечно же можно smile 
Код

#include <iostream>
#include <string>
#include <functional>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/algorithm/iteration.hpp>
#include <boost/fusion/include/at_c.hpp>

struct Anmeldung
{
    enum
    {
        Nachname,
        Vorname,
        Email,
        Matrikelnummer,
        Studienrichtung,
        Semester,
        G1name,
        G1vorname,
        Anmerkung
    };
    typedef boost::fusion::vector<
        std::string, std::string,
        std::string, std::string,
        std::string, std::string,
        std::string, std::string,
        std::string> type;
};

struct input
{
    template <typename T>
    void operator()(T& r) const
    {
        std::cin >> r;
    }
    void operator()(std::string& r) const
    {
        std::getline(std::cin, r);
    }
};

int main()
{
    Anmeldung::type x;
    boost::fusion::for_each(x, input());
    std::cout << boost::fusion::at_c<Anmeldung::Email>(x) << std::endl;
}



Это сообщение отредактировал(а) azesmcar - 13.10.2010, 15:43
PM   Вверх
mes
Дата 13.10.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Killer_13 @  13.10.2010,  13:34 Найти цитируемый пост)
понятненько, так и думал, что попроще не будет

http://cplusplus.com/reference/iostream/is...operator%3E%3E/


--------------------
PM MAIL WWW   Вверх
Killer_13
Дата 13.10.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(azesmcar @ 13.10.2010,  15:43)
Цитата(Killer_13 @  13.10.2010,  14:26 Найти цитируемый пост)
Нпример вот так
liste[i]

ну конечно же можно smile 
Код

#include <iostream>
#include <string>
#include <functional>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/algorithm/iteration.hpp>
#include <boost/fusion/include/at_c.hpp>

struct Anmeldung
{
    enum
    {
        Nachname,
        Vorname,
        Email,
        Matrikelnummer,
        Studienrichtung,
        Semester,
        G1name,
        G1vorname,
        Anmerkung
    };
    typedef boost::fusion::vector<
        std::string, std::string,
        std::string, std::string,
        std::string, std::string,
        std::string, std::string,
        std::string> type;
};

struct input
{
    template <typename T>
    void operator()(T& r) const
    {
        std::cin >> r;
    }
    void operator()(std::string& r) const
    {
        std::getline(std::cin, r);
    }
};

int main()
{
    Anmeldung::type x;
    boost::fusion::for_each(x, input());
    std::cout << boost::fusion::at_c<Anmeldung::Email>(x) << std::endl;
}


azesmcar
Дяяяя, я не такой крутой кодер. smile

mes

А подскажите пож, а кукую информацию я должен взять из вашей ссылки на счет структур.

Всем спасибо. smile
PM MAIL   Вверх
mes
Дата 13.10.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Killer_13 @  13.10.2010,  14:52 Найти цитируемый пост)
а кукую информацию я должен взять из вашей ссылки на счет структур.

о том, как удобно использовать оператор >> 
smile
Код

#include <iostream>
#include <fstream>
#include <string>

struct Anmeldung
{
  std::string Nachname;
  std::string Vorname;
  std::string Email;
};

std::istream& operator >> (std::istream& is, Anmeldung& a)
{
    is >> a.Nachname
       >> a.Vorname
       >> a.Email;
    
    return is;
}
int main () {

     std::ifstream csv("anmeldung.csv");
     
     Anmeldung a;
     
     csv >> a;
}





--------------------
PM MAIL WWW   Вверх
Killer_13
Дата 13.10.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Вот более примитивный примерчик:
Код

//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

struct My
{
    char MyName[30];
    char SheName[25];
    char HeName[60];
    int Num;
};
int main(int argc, char* argv[])
{
    My  m, m2;
        strcpy(m.MyName, "My Name is");
        strcpy(m.SheName, "She Name is");
        strcpy(m.HeName, "He Name is");
        m.Num = 12345;

   HANDLE    MyF = CreateFile("C:\\MyProba.dat",
                             GENERIC_WRITE | GENERIC_READ,
                             NULL,
                             0,
                             OPEN_ALWAYS,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);
    if(MyF != INVALID_HANDLE_VALUE)
    {
        DWORD T;
        WriteFile(MyF, &m, sizeof(My), &T, NULL);
            SetFilePointer(MyF, 0, NULL, FILE_BEGIN);
        ReadFile(MyF, &m2, sizeof(My), &T, NULL);
        CloseHandle(MyF);

        printf(" 1 = %s\n 2 = %s\n 3 = %s\n 4 = %d\n",
                m2.MyName, m2.SheName, m2.HeName, m2.Num);
    }
    getchar();
    return 0;
}
//---------------------------------------------------------------------------

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


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Код

   HANDLE    MyF = CreateFile("C:\\MyProba.dat",
                             GENERIC_WRITE | GENERIC_READ,
                             NULL,
                             0,
                             OPEN_ALWAYS,
                             FILE_ATTRIBUTE_NORMAL,
                             NULL);


Ну и зачем такое извращение в юзерспейсе?

Топикстартеру советую почитать что-нибудь про (де)сериализацию данных.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Killer_13
Дата 13.10.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Грспода, я же в самом начале говорил, что мне нужно только задачку решить, мне не нужно очень глубоко в с++ лезть. smile

Это сообщение отредактировал(а) Killer_13 - 13.10.2010, 20:52
PM MAIL   Вверх
Sartorius
Дата 13.10.2010, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 smile 
Цитата(djamshud @  13.10.2010,  21:48 Найти цитируемый пост)
Ну и зачем такое извращение в юзерспейсе?

А причем здесь userspace? Насколько я знаю, в ring0 совсем другие функции для работы с ФС используются. Я, кстати, в последнее время тоже стараюсь реже использовать обретки из stdio...
PM MAIL ICQ   Вверх
djamshud
Дата 13.10.2010, 23:44 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Оффтопик, так оффтопик.

Я могу понять использование этой десятиэтажной каракатицы в драйвере. Могу понять, если нужно как-то изощренно открыть файл (судя по всему те стопицот передаваемых параметров именно изощренности и служат) или чтобы получить идентификатор для дальнейших изощрений. Я могу понять, почему не пользоваться плюсовыми стримами. Но я не могу понять, зачем такой абракадаброй просто, черт возьми, сбрасывать данные в файл.

Право, я не в курсе, можно ли использовать это в драйвере, или для тех случаев существуют другие каракатицы. Я просто имел в виду решение прикладной задачи - не так выразился.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Dov
Дата 14.10.2010, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Killer_13 @  13.10.2010,  13:26 Найти цитируемый пост)
Можно например записывать в структуру из файла как-то попроще?


fread


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
SVN74
Дата 14.10.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Цитата(djamshud @  13.10.2010,  23:44 Найти цитируемый пост)
Я могу понять использование этой десятиэтажной каракатицы в драйвере. Могу понять, если нужно как-то изощренно открыть файл (судя по всему те стопицот передаваемых параметров именно изощренности и служат) или чтобы получить идентификатор для дальнейших изощрений. Я могу понять, почему не пользоваться плюсовыми стримами. Но я не могу понять, зачем такой абракадаброй просто, черт возьми, сбрасывать данные в файл.

Для Windows приложений рекомендуется использовать CreateFile, по причине более безопасных доступов к файловой системе.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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