Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 2 / 0
Регистрация: 14.08.2017
Сообщений: 139

Поиск и произвольный доступ внутри файла

15.09.2017, 00:42. Показов 1155. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Допустим есть текстовый файл, выглядит так:

________________________________________ ____________
C8-0C-C8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
C80CC8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD


бла бла бла

88-D7-F6 (hex) ASUSTek COMPUTER INC.
88D7F6 (base 16) ASUSTek COMPUTER INC.
15,Li-Te Rd., Peitou, Taipei 112, Taiwan
Taipei Taiwan 112
TW

1C-1F-D4 (hex) LifeBEAM Technologies LTD
1C1FD4 (base 16) LifeBEAM Technologies LTD

________________________________________ ____________

Как мне читать из него, по 6 символов, которые идут только перед нужными словами? Например из вышеприведенного фрагмента мне надо прочитать символы перед '(base 16) ASUSTek' и перед '(base 16) HUAWEI', то есть это 88D7F6 и C80CC8. Вроде бы после нужных мне серий символов, до названия (по которому я их буду искать в файле) всегда идет 16 символов (включая табуляцию и пробел).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2017, 00:42
Ответы с готовыми решениями:

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

Поиск файла внутри каталога, внутри поиска каталогов
Доброго времени суток, помогите пожалуйста с задачей: - Есть основная папка. - Нужно произвести поиск всех субпапок внутри...

Поиск внутри папки и внутри файла
Добрый день, в связи с нуждами по работе начал изучать С# и нахожусь пока на начальном уровне. Нужна ваша помощь. Собственно сам вопрос: ...

6
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.09.2017, 01:15
Читаешь строки, ищешь в них (base 16) ASUSTek или (base 16) HUAWEI, если есть - запоминаешь откуда начинаются, шесть символов назад, вырезаешь подстроку до начала найденных слов.
0
0 / 2 / 0
Регистрация: 14.08.2017
Сообщений: 139
15.09.2017, 01:26  [ТС]
то есть без флага binary читать? До символа перевода на новую строку?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.09.2017, 01:39
Цитата Сообщение от GregoryE Посмотреть сообщение
то есть без флага binary читать?
У тебя файл текстовый, поэтому binary не нужен.
Цитата Сообщение от GregoryE Посмотреть сообщение
До символа перевода на новую строку?
getline() по умолчанию читает до символа новой строки. Читай в std::string.

Добавлено через 1 минуту
http://www.cplusplus.com/refer... g/getline/
http://www.cplusplus.com/reference/string/string/
http://www.cplusplus.com/refer... ring/find/
http://www.cplusplus.com/refer... ng/substr/
0
0 / 2 / 0
Регистрация: 14.08.2017
Сообщений: 139
15.09.2017, 01:48  [ТС]
Я недоумеваю как делать самое главное. Вот предположим, начал так:
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
// ConsoleApplication194.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
 
using namespace std;
 
 
int main()
{
    ifstream in("vendors.txt", ios::in);
    string id, str;
    char name[5] = "\0";
    int leters = 0;
    id = ("Organization");
    
    char allfile[360000];
    in.read((char*)allfile, sizeof(allfile));
    
    for (int i = 0; i < in.gcount(); ++i)
    {
 
        getline(in, str);
        
        cout << str << endl;
    }
 
    _getch();
    return 0;
}
Я читал про seekp() и seekg(). ими манипулировать?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.09.2017, 02:50
Цитата Сообщение от GregoryE Посмотреть сообщение
Я читал про seekp() и seekg(). ими манипулировать?
...
Цитата Сообщение от nd2 Посмотреть сообщение
Читаешь строки, ищешь в них (base 16) ASUSTek или (base 16) HUAWEI, если есть - запоминаешь откуда начинаются, шесть символов назад, вырезаешь подстроку до начала найденных слов.
Цитата Сообщение от nd2 Посмотреть сообщение
Добавлено через 2 минуты
Цитата Сообщение от GregoryE Посмотреть сообщение
Вот предположим, начал так:
Это зачем?
Цитата Сообщение от GregoryE Посмотреть сообщение
C++
1
2
char allfile[360000]; 
in.read((char*)allfile, sizeof(allfile));
Добавлено через 1 минуту
Это в параметры while() помести:
Цитата Сообщение от GregoryE Посмотреть сообщение
C++
1
getline(in, str)
Добавлено через 52 секунды
И читай по ссылкам, как искать и вырезать подстроку из std::string.
0
0 / 2 / 0
Регистрация: 14.08.2017
Сообщений: 139
15.09.2017, 12:41  [ТС]
Скоро я все сделаю. )

Добавлено через 2 часа 49 минут
Застопорился здесь. Не пойму как теперь именно 6 чаров этих с найденных строк прочитать:

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// ConsoleApplication194.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
 
using namespace std;
 
 
int main()
{
    ifstream in("vendors.txt", ios::in);
    string str, str1;
    //char name[5] = "\0";
    int leters = 0;
    int pos(0), size(0);
    
    // searching for "Routerboard":
    pos = 20;
    size = 11;
    string name = "Routerboard";
    string result;
    int index = -1;
    int itter(0);
    int strnums[256];
    int j(0);
    while (getline(in, str))
{
        itter++;
        if (str.length() > pos + size)
        {
 
            str1 = str.substr(pos, size);
 
 
            if (str1 == name)
            {
                j++;
                strnums[j] = itter;
                cout << j << "- cell, meaning: " << itter << endl;
            }
 
 
        }
    }
 
    j = 0;
    do
    {
        index++;
        getline(in, str);
        if (index == strnums[j++])
        {
            //getline(in, str);
            cout << str.substr(0, 6);
        }
    } while (!in.eof());
 
    _getch();
    return 0;
}
Добавлено через 39 минут
Фух, кажется сделал. Так:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// ConsoleApplication194.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
 
using namespace std;
 
 
int main()
{
    ifstream in("vendors.txt", ios::in);
    string str, str1;
    //char name[5] = "\0";
    int leters = 0;
    int pos(0), size(0);
    
    // searching for "Routerboard":
    pos = 20;
    size = 11;
    string name = "Routerboard";
    string result;
    int index = 0;
    int itter(0);
    int strnums[256];
    int j(0), cnt(0);
    
        do
{
        getline(in, str);
        itter++;
        if (str.length() > pos + size)
        {
            str1 = str.substr(pos, size);
            if (str1 == name)
            {
                cnt++;
                j++;
                strnums[j] = itter;
            //  cout << j << "- cell, meaning: " << itter << endl;
            }
        }
        } while (!in.eof());
    j = 1;
    in.close();
    ifstream in2("vendors.txt", ios::in);
    do
    {
        index++;
        if (j == cnt) j = 0;
        
        
        getline(in2, str);
        //cout << index << " = " << strnums[j] <<endl;
        // _getch();
        
        
        if (index == strnums[j])
        {
            cout << str.substr(0, 6);
            j++;
        }
        
        
    } while (!in2.eof());
 
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2017, 12:41
Помогаю со студенческими работами здесь

Web audio api доступ к информации внутри файла
Уважаемые, не могу собрать очень простую схему. Мне нужно получить массив сэмплов из wav файла. Делаю следующие var audio = new...

Outlook [Поиск внутри файла]
Друзья, Может ли outlook искать искать текст/слова внутри прикрепленных документов, или он только ограничивается поиском внутри самого...

Файлы/Поиск/информация внутри файла
Есть файл .В котором имеется информация о книгах.А именно : ФИО автора, название книги и год издательства. Определить есть ли книга под...

Поиск файла внутри папки по расширению
В папке есть файл с расширением txt, этот файл всегда один в папке, но у него всегда разное имя. Как можно получить имя этого файла, если...

Стек и произвольный доступ
dederkay, то что вы делается сложно назвать стеком. Это больше похоже на список. Точнее это и есть список. Одним из главных свойств стека...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru