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

Чтение и поиск по файлу - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
29.04.2011, 19:20     Чтение и поиск по файлу #1
Народ помогите пожалуйста! В универе дали такую задачу на C++. В текстовом файле содержутся фамилии учеников и их оценки. Например: Иванов 4, 5, 4. Фамилии с оценками пишутся в столбик. Мне нужно сделать так, чтобы я вводил с клавиатуры фамилию и на экран выходила эта фамилия с соответствующими оценками. Я уже всю голову сломал, а сделать не могу. Я понимаю как записать в файл и считать оттуда текст, но чтобы имя вводить с клавы и все работало так, как в задаче я не могу. Помогите очень прошу!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 19:32     Чтение и поиск по файлу #2
Читайте построчно файл, и проверьте слово до первого пробела - это и будет ваша фамилия... Если все нормально, печатайте всю строку!
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
29.04.2011, 19:42  [ТС]     Чтение и поиск по файлу #3
Смысл ясен, но я не понимаю как это реализовать.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 21:02     Чтение и поиск по файлу #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
 
void CheckFile (std::string Surname0)
{
    std::ifstream FileInput ("input.txt", std::ifstream::in);
    assert(FileInput);
    std::string StringFile, StringFileSurname;
    short int NumberPerson = 0;
    while (FileInput)
    {
        std::getline(FileInput, StringFile);
        StringFileSurname.append(StringFile, 0, StringFile.find(" "));
        if (StringFileSurname == Surname0)
        {
            std::cout << StringFile << std::endl;
            NumberPerson++;
        }
        StringFileSurname.clear();
    }
    FileInput.close();
    if (NumberPerson == 0)
        std::cout << "Not found!" << std::endl;
}
 
int main()
{
    std::string Surname;
    std::cout << "enter the name [> ";
    std::getline(std::cin, Surname);
    CheckFile(Surname); 
    std::cin.get();
    return 0;
}
Добавлено через 9 минут
В этом коде я не акцентировал внимание на регистр фамилии! Писал для стандартной подписи "Surname"!
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
29.04.2011, 23:45  [ТС]     Чтение и поиск по файлу #5
Мне вообщето на C++ надо, но все равно огромное спасибо, на С++ сам переведу.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.04.2011, 23:49     Чтение и поиск по файлу #6
Цитата Сообщение от Jaksn Посмотреть сообщение
Мне вообщето на C++ надо,
Так код выше и есть на С++, во всей его красоте.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.04.2011, 00:09     Чтение и поиск по файлу #7
Еще вариант.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
 
std::vector<std::string> fill_cont_from_file(const std::string& file_name)
{
    std::vector<std::string> result_vec;
    std::ifstream ifs(file_name.c_str());
    if(!ifs)
    {
        std::cerr << "Error with open file: " << file_name << '\n';
        return result_vec;
    }
    while(!ifs.eof())
    {
        std::string string;
        std::getline(ifs, string);
        result_vec.push_back(string);
    }
    return result_vec;
}
 
int main()
{
    std::string file_name;
    std::cout << "Enter file_name: ";
    std::cin >> file_name;
    std::vector<std::string> vec = fill_cont_from_file(file_name);
           if(vec.empty())
           {
                std::cout << "File is empty\n";
                return 1;
           }
    std::string surname;
    std::cout << "Enter surname: ";
    std::getline(std::cin, surname);
    std::vector::const_iterator iter = std::find_if(vec.begin(), vec.end(),
        [surname](const std::string& str)
    {
        std::stringstream ist(str);
        std::string tmp;
        ist >> tmp;
        return tmp == str;
    });
           if(iter != vec.end())
              std::cout << *iter <<'\n';
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 00:15     Чтение и поиск по файлу
Еще ссылки по теме:

C++ Путь к файлу и чтение матрицы символов
C++ Как сделать поиск по файлу?
Организовать поиск по файлу с помощью регулярных выражений C++

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

Или воспользуйтесь поиском по форуму:
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
30.04.2011, 00:15  [ТС]     Чтение и поиск по файлу #8
Цитата Сообщение от asics Посмотреть сообщение
Так код выше и есть на С++, во всей его красоте.
Я просто только начал изучать язык, поэтому мне мало что понятно из того что есть в коде. Я вот поначалу и подумал что это на С.
Yandex
Объявления
30.04.2011, 00:15     Чтение и поиск по файлу
Ответ Создать тему

Метки
поиск по фаилу
Опции темы

Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru