Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
#1

fstream, string, random - C++

23.10.2013, 12:53. Просмотров 351. Ответов 4
Метки нет (Все метки)

Вопрос такой, есть структура
C++
1
2
3
4
5
6
7
8
9
struct StructEmployee {;
    int id;
    string surname;
    string name;
    string patronymic;
    string appointment;
    string education;
    int expirience;
} UsrStruct;
Данные записываются вручную пользователем
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        StructEmployee UsrStruct[StructSize];for (int ind=0; ind < StructSize; ind++) {
        cin.ignore();       
        system("cls");
        UsrStruct[ind].id = ind+1;
        cout << "Введите фамилию:" << endl;
        getline(cin,UsrStruct[ind].surname);
        cout << "Введите имя:" << endl;
        getline(cin,UsrStruct[ind].name);
        cout << "Введите отчество:" << endl;
        getline(cin,UsrStruct[ind].patronymic);
        cout << "Введите данные об образовании работника:" << endl;
        getline(cin,UsrStruct[ind].education);
        UsrStruct[ind].expirience = rand()%30;
        ofstream labfile("lab.dat", ios::binary);
        labfile.write((char*)(&UsrStruct[ind]),sizeof(UsrStruct));
        labfile.close();
    }
Но это никак не представляется удобным, возможно ли проделать такое чтобы:
C++
1
UsrStruct[ind].surname, UsrStruct[ind].name, UsrStruct[ind].patronymic
- бралось из файла FIO.txt рандомом из списка фамилий, записанных в файле, через \n, имя и отчество отделено от фамилии и друг от друга через пробел
Иванов Иван Иванович
Сидоров Сидор Сидорович
и т.д.
C++
1
UsrStruct[ind].education
- аналогично первому, только из другого файла, ну с этим разберусь если будет хотя бы первое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 12:53     fstream, string, random
Посмотрите здесь:

Как указать имя файла в fstream через string и функцию? - C++
Я написал програму которая переводит системы исчесления(2-36).Програма роботает на ура ,но я хотел сделать историю, а поскольку хотелось...

fstream::setbuf - C++
вот тут написано о этом методе: http://msdn.microsoft.com/en-us/library/aa243826(VS.60).aspx но при этом VC6.0 на такой код: ...

траблы с fstream - C++
Всем привет! Начинаю работать над дз по проге и никак не могу разобраться с одной фишкой с fstream. Вот мои код: #include &quot;stdafx.h&quot; ...

Работа с fstream - C++
Вопрос такой: какие методы есть в fstream (если конечно есть) для того, чтобы удалить файл? Мне надо именно через fstream. system(&quot;del...

Ошибка с fstream - C++
При создании исполняемого файла (т.е release версии) вылезает ошибка: raised exception class EAccessViolation with message 'Access...

Write из fstream - C++
Здравствуйте!) Не могу понять, как пишет данные в файл функция write( То есть мы с помощью seekp указали позицию в потоке (файле) и...

cstdio vs fstream - C++
Есть программа, виводящяя 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной системе) Для...

Работа с fstream - C++
Здорова! Создал класс для записи и чтения файла через операцию , но почему то он работает не так как нужно. #include &lt;iostream&gt; ...

Fstream и malloc_assert - C++
Подскажите пожалуйста, а то уже голова болит. Есть программа которая предоставляет выбор алгоритма обработки. Данные она берет из файлов...

Класс fstream - C++
Здравствуйте, Уважаемые форумчане ! Есть код: //Дан файл, содержащий несколько строк. Найти максимальную длину строки и вывести в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 12:58     fstream, string, random #2
А в чем проблема? Точно так же открываем файл с фамилиями на чтение ifstream'ом и понеслась.
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
23.10.2013, 13:01  [ТС]     fstream, string, random #3
Цитата Сообщение от Rivory Посмотреть сообщение
А в чем проблема? Точно так же открываем файл с фамилиями на чтение ifstream'ом и понеслась.
Собственно проблема в рандоме, и в разделителях.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 13:28     fstream, string, random #4
Ну дергайте построчно весь файл в какой-нибудь контейнер, например вектор, потом от туда выбирайте рандомную строку, разбивайте её на слова и запихивайте в объект структурки. Что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(int argc, char** argv)
{
    ifstream infile("FIO.txt");
    string line;
    vector<string> lines;
    if(!infile.is_open()) cout<<"WHYYYY?";
    while (getline(infile, line))
    {
        try {
            lines.push_back(line);
        } catch (...) {
            infile.close();
            throw;
        }
    }
    system("pause");
    return 0;
 }
В итоге вектор lines у меня полностью заполнен строками вида Ivanov Ivan Ivanovich
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
23.10.2013, 23:47  [ТС]     fstream, string, random #5
Добавлено через 1 час 3 минуты
Цитата Сообщение от Rivory Посмотреть сообщение
Ну дергайте построчно весь файл в какой-нибудь контейнер, например вектор, потом от туда выбирайте рандомную строку, разбивайте её на слова и запихивайте в объект структурки. Что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(int argc, char** argv)
{
    ifstream infile("FIO.txt");
    string line;
    vector<string> lines;
    if(!infile.is_open()) cout<<"WHYYYY?";
    while (getline(infile, line))
    {
        try {
            lines.push_back(line);
        } catch (...) {
            infile.close();
            throw;
        }
    }
    system("pause");
    return 0;
 }
В итоге вектор lines у меня полностью заполнен строками вида Ivanov Ivan Ivanovich
И всё таки не могу понять как добиться рандома из вектора, у нас есть lines.begin() и lines.end() как голова вектора и концовка, а как получить какой-нибудь средний не пробегая по всему вектору не пойму, допустим можно конечно данные из вектора отправлять в структуру, а потом только рандомом их

Добавлено через 44 минуты
Разобрался, спасибо)
Yandex
Объявления
23.10.2013, 23:47     fstream, string, random
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru