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

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

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

fstream, string, random - C++

23.10.2013, 12:53. Просмотров 361. Ответов 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
- аналогично первому, только из другого файла, ну с этим разберусь если будет хотя бы первое
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос fstream, string, random (C++):

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

Random и объекты класса (pseudo random) - C++
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

std::string, std::fstream, ошибка кучи - C++
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString. Замечательно, то же самое... ошибка при...

fstream с++ - C++
Помогите пожалуйста... Как при считывании из файла считать переменные если они в файле находяться на разных строчках например надо...

<fstream> - C++
как читать из файла и записывать переменные написанные через пробел используя ifstream in(&quot;int.txt&quot;); ofstream...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 12:58 #2
А в чем проблема? Точно так же открываем файл с фамилиями на чтение ifstream'ом и понеслась.
0
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
23.10.2013, 13:01  [ТС] #3
Цитата Сообщение от Rivory Посмотреть сообщение
А в чем проблема? Точно так же открываем файл с фамилиями на чтение ifstream'ом и понеслась.
Собственно проблема в рандоме, и в разделителях.
0
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 13:28 #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
1
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
23.10.2013, 23:47  [ТС] #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 минуты
Разобрался, спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 23:47
Привет! Вот еще темы с ответами:

fstream - C++
помогите, пожалуйста, чет я совсем запуталась((( /*Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить...

fstream - C++
Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном направлении в новый файл. Например, если в файле...

fstream - C++
Всем доброго дня! Как с помощью библиотеки fstream вывести содержимое файла на экран??

fstream и for - C++
Здрасте. Собственно, не могу понять, по какой причине не работает вот такой вот код, хотя по идее должен работать, или я ошибаюсь? ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.10.2013, 23:47
Ответ Создать тему
Опции темы

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