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

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

Войти
Регистрация
Восстановить пароль
 
WebSofter
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 52
#1

Прочесть ту или иную строку из файла - C++

24.01.2014, 06:22. Просмотров 246. Ответов 7
Метки нет (Все метки)

Есть у меня текстовый файл с кириллицей, хочу обращаться в этом файле к определенным строкам, которые содержат id книги(#1,#2 и #3) через определенные промежутки, что-то у меня не получается, помогите, знающие.
Вот biblioteka.txt
XML
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
#1
      Жанр
  Комильфо
        52
  Буткевич
      2012
    Москва*
    Додека*
       232
        58
        16
   Абрамов
#2
Художество
   Природа
        75
    Пушкин
      2011
      Киев*
    Додека*
       500
        20
         5
     Юрьев
#3
      Жанр
  Название
        23
     Автор
      2014
Издательство
      Киев
       230
       250
      2015
       ФИО
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int* getID(void)
{
    ifstream fin("biblioteka.txt");
    char str[1000]=" ";//40
    int *books=new int[1000];//50
    memset(books, 0, sizeof(int)*10);//51
    long in=0;
    while(!fin.eof())
    {
        
        fin.getline(str,13);
        if(strncmp(str,"#",1))
        {
            return books;
        }
        if(!strncmp(str,"#",1))
        {
            books[in]=atoi(str+1);
            in++;
        }
    }
     return books;
}
Вот , что накидал, тут функция возвращает массив ID-ов, к каждому из которых по порядку можем обращаться как getID()[n], этот код работал с другим форматом, но появлялись крякозябры, а с кириллицей никак не вяжется, разъясните пожалуйста, как будет правильный код, спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 06:22     Прочесть ту или иную строку из файла
Посмотрите здесь:

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Прочесть строку сишным способом(фопен) - C++
Добрый день. Есть необходимость прочесть определенную строку(по номеру) используя стандартный ввод/вывод си, и не используя getline(). Как...

Строка: можно ли прочесть строку по словам? - C++
здравствуйте, подскажите пожалуйста можно ли прочесть с или с++ строку по словам ?

Записать\прочесть данные в\из бинарного файла в инкапсулированну структуру - C++
Здравствуйте форумчане. Как записать\прочесть данные в\из бинарного файла в инкапсулированну структуру такого вида? struct obj { ...

Из файла прочесть массив, а результат работы программы записать в файл - C++
На практике дали задание, в котором надо из файла прочесть массив, а результат работы программы записать в файл. Как это сделать? В...

Прочесть текст из файла и вывести предложение, содержащее максимальное количество знаков пунктуации - C++
Здравствуйте, уважаемый программисты!!! У меня проблема в создании консольной задачи на си++ Надо создать программу, которая считывает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 06:46     Прочесть ту или иную строку из файла #2
Задача туманна. Зачем вам массив ID-ов? Эти ID-ы, что из себя представляют? Порядковый номер записи в файле? Или какой-либо ID, связанный, именно, с книгой?

Добавлено через 1 минуту
В файле структуры записаны?
WebSofter
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 52
24.01.2014, 07:56  [ТС]     Прочесть ту или иную строку из файла #3
Ну это, как бы база данных, где каждая книга имеет ИД, по этим ИДам я хочу обращаться к книгам для запросов и удаления. Это обычный текстовый файл, просто проблема работать с кириллицей под консоль, вот прощу подсказки.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 08:07     Прочесть ту или иную строку из файла #4
Цитата Сообщение от WebSofter Посмотреть сообщение
просто проблема работать с кириллицей под консоль
Опишите конкретно в чём проблема. Русский текст не выводится нормально, или что?
WebSofter
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 52
24.01.2014, 08:44  [ТС]     Прочесть ту или иную строку из файла #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Опишите конкретно в чём проблема. Русский текст не выводится нормально, или что?
Хочу по порядковому номеру узнать ИД книги, т.е. есть функция getID(), который возвращает массив всех существующих ИДов и мне надо ввести номер порядка книги и узнать ее ИД, т.е. getID()[1] будет возвращать ИД первой книги, если какая-то книга удалена, к примеру вторая, то getID()[2] будет возвращать ИД 3 т.е. ИД и порядок могут не совпадать по прчине удаления книги по этому ИДу
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 19:24     Прочесть ту или иную строку из файла #6
Цитата Сообщение от WebSofter Посмотреть сообщение
Хочу по порядковому номеру узнать ИД книги, т.е. есть функция getID(), который возвращает массив всех существующих ИДов и мне надо ввести номер порядка книги и узнать ее ИД, т.е. getID()[1] будет возвращать ИД первой книги, если какая-то книга удалена, к примеру вторая, то getID()[2] будет возвращать ИД 3 т.е. ИД и порядок могут не совпадать по прчине удаления книги по этому ИДу
Проблема с кирилицей здесь каким боком?

Добавлено через 9 минут
И на вопросы не отвечаете:
Цитата Сообщение от alsav22 Посмотреть сообщение
В файле структуры записаны?
Добавлено через 28 минут
Если записи в файле - структуры:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int getID(int books[])
{
    ifstream fin("biblioteka.txt");
    if (!fin) 
        cout << "Error!" << endl;
    else
    {
        long in = 0;
        char ch;
        while(fin)
        {
            if (fin >> ch >> books[in]) // пропускаем первый символ # и читаем, число за ним, в масссив
                in++;
            for (int i = 0; i < 12; ++i) // пропускаем '\n' этой строки и ещё 11 строк с полями структуры
                fin.ignore(100, '\n');
        }
        return in; // количество считанных ID
    }
    
    return 0;
}
 
 
int main()
{
    int books[1000]; // массив под ID
    
    int number = getID(books);
    
    if (number) // если считаны ID
        for (int i = 0; i < number; ++i) 
            cout << books[i] << ' ';
    
    cin.get();
    return 0;
 }
Добавлено через 6 минут
Если в файле структуры, то нет никакой необходимости разделять их какими-либо образом (типа: строкой со спецсимволом #). Достаточно сделать ID первым полем структуры. Тогда, для создания массива ID, просто считывается каждое первое поле структуры в файле.
Строки-разделители, со спецсимволами, имеет смысл применять, когда записи по книгам имеют разный размер.
Миниатюры
Прочесть ту или иную строку из файла  
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
24.01.2014, 20:52     Прочесть ту или иную строку из файла #7
Цитата Сообщение от WebSofter Посмотреть сообщение
появлялись крякозябры, а с кириллицей никак не вяжется, разъясните пожалуйста, как будет правильный код, спасибо.
сохранять в UTF-8, считывать в std::wstring через std::wifstream
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2014, 20:14     Прочесть ту или иную строку из файла
Еще ссылки по теме:

Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом - C++
Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа. И...

Не могу прочесть код - C++
Объясните мне код начиная с while, не могу понять что за код внутри while ifstream inFile(&quot;Bill.txt&quot;); string vowels = &quot;aeiouy&quot;; ...

Прочесть данные с массива - C++
Здравствуйте форумчане, нуждаюсь в маленькой помощи в решении несложной задачки. Дан массив А, и с него надо считать данные и записать их...

Какие книги лучше прочесть? - C++
Доброго всем дня! Я только-только начал изучать программирование, и выбрал 1 своим языком - c++. Начал знакомство с книги &quot;C++. Основы...


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

Или воспользуйтесь поиском по форуму:
WebSofter
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 52
25.01.2014, 20:14  [ТС]     Прочесть ту или иную строку из файла #8
Благодарю за код, работает
Yandex
Объявления
25.01.2014, 20:14     Прочесть ту или иную строку из файла
Ответ Создать тему
Опции темы

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