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

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

Войти
Регистрация
Восстановить пароль
 
Vegeta
Сообщений: n/a
#1

Возможен ли поиск в txt-файле? - C++

03.07.2010, 23:02. Просмотров 470. Ответов 3
Метки нет (Все метки)

доброе время суток, сам я не програмер. Но решил облегчить себе жизнь и так ближе к делу
создал програмку (с гуглом ) которая помогает мне учится датской язык.
Она с ТхТ файла на ура выкидывает 5 слов (возле каждого слова есть номер) ну и я в уме их себе литовском (ибо с литвы я) повторяю. Вот тока если я не-знаю слова (забыл) я нажимаю число и мне оно выдает на литовском.
вот сама програма

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
73
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <ctime>
 
using std::cout;
using std::cin;
using std::fstream;
using std::string;
using std::vector;
 
bool loadWords(char *,vector<string> &);
int main()
{
    
    srand(time(NULL));
 
    vector<string> wordList;
    int sk;
    
    if(loadWords("C:\\wordFile.txt",wordList))
    {
        cout << "5 Random danske words from the file\n";
        for(int i=0; i<5; i++)
            cout << wordList.at(rand() % wordList.size()) << '\n';
    }
    else
        cout << "There was an error opening the file\n";
        cin>>sk;
        if (sk==1)
        cout<<"skaitykla"<<endl;
        if (sk==2)
        cout<<"bet"<<endl;
        if (sk==3)
        cout<<"nuobodi"<<endl;
        if (sk==4)
        cout<<"man"<<endl;
        if (sk==5)
        cout<<"taip"<<endl;
        if (sk==6)
        cout<<"pradeti"<<endl;
        if (sk==7)
        cout<<"uzuot, vietoj"<<endl;
        if (sk==8)
        cout<<"uz"<<endl;
        if (sk==9)
        cout<<"sudare, padare"<<endl;       
 
system("pause");
    return 0;
}
 
bool loadWords(char * fileName,vector<string> & words)
{
    fstream file(fileName,std::ios::in);
    char buffer[30];
 
    if(file.is_open())
    {
        words.clear();
        while(!file.eof())
        {
            file.getline(buffer,30);
            words.push_back(buffer);
        }
        file.close();
        return true;
    }
    else
        return false;
 
}
вопрос можно ли сделать так чтобы не-надо было-бы мне руками в сорс вводить команды а просто в другом тхт ввести слова на литовском и если я не-буду знать то аналогично нажму номер этого слова и мне напишет как оно приводится?
Или может есть другой способ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2010, 23:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возможен ли поиск в txt-файле? (C++):

Поиск в txt файле - C++
Есть программа Телефонная книга. Программа со структурой. Информация сохраняется в txt и считавыется оттуда же. Присутствуют функции поиска...

Поиск в .txt файле и вывод на экран - C++
Такая проблема, необходимо осуществить поиск слова в .txt файле , если данной слово найдено, то распечатать строку с этим словом, и...

Поиск и замена слов в файле txt - C++
Как заменить и найти слова в файле txt на С++. То есть есть файл вот такой структуры AAA БББ BBB 111 222 ыыы

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

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt - C++
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется текстовый файл 2.txt c таким...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
04.07.2010, 00:42 #2
наверное лучше с типизированным файлом т.к. там слова будут храниться по номеру т.е. например можно 0-2-4-6 - слова оригинальные,а 1-3-5-7 - на литовском.правда вводить их туда неудобно.
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
04.07.2010, 01:20 #3
Да конечно можно, почему нельзя-то?
Для этого ты должен сделать примерно так:

Значит, у тебя есть текстовый файл с переводом слов, я правильно понял?
Вот такой примерно:
"рыба мясо дом молоко"

В начале программы считываешь этот файл в динамический массив. Вот так:

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
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!перегоняем файл в строку!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 long int razmer_faila;
 
//Теперь находим размер файла
 if (!(razmer_faila= razmer_faila ("perevod.txt"))) {
  printf ("не получилось найти размер файла perevod.txt\n");
  system ("pause");
  return 0;
 }
 
 
 //Теперь открываем файл на чтение
 FILE* f;
 if (!(f= fopen ("perevod.txt", "rb"))) {
  printf ("файл perevod.txt на чтение не тоткрыт\n");
  system ("pause");
  return 0; 
 }  
 
 //Теперь переписываем файл в строку нужного размера. ДЛя этого такую строку надо выделить
char* perevod_stroka = new char [razmer_faila];
 
 //И собсно запись файла в эту строку
 if (fread (perevod_stroka, 1, razmer_faila, f)<razmer_faila) {
  printf ("не удалось считать файл perevod_stroka в строку\n");
  system ("pause");
  return 0;
 }
 
 fclose (f);
 ...
 
 //В конце работы
 delete [] perevod_stroka;
Вот после этой хери у тебя будет в строке perevod_stroka файл-перевод

Ну, а теперь пиши какой-нибудь код, чтобы по нажатию 1 выводилось первое слово в этой строке, 2- второе, 3- третье и так далее. МОжно задействовать оператор switch. Можешь создать массив указателей на эти слова, заполнить его адресами этих слов и и обращаться к его элементам (адресам слов) при печатании слова.

О чём ты должен позаботиться:
1) razmer_faila () это функция которая возвращает размер файла. Как-нибудь сообрази
2) В файле у тебя между словами непечатаемые символы, а в строке-перводе должен быть символ 0. Сообрази как при перегоне файла в строку это сделать.
3) Зачем перегонять файл в строку, если можно работать с ним напрямки? Это хорошая и правильная привычка. Технически грамотная. Перегоняем файл в строку и делаем с ней что хотим.
4) Должен разобраться с режимами открытия файлов. Мне с бинарными проще работать, в общем, думай.

Вроде всё.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.07.2010, 03:38 #4
C++
1
2
3
struct pair {
    string den, lit;
};
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
enum { MAXSLICE = 5 };
 
...
 
    struct pair t;
    struct pair slice[MAXSLICE];
    int answer;
 
 
    // открыли файлы in1 - слова Дании, in2 - слова Литвы
 
 
    while (dialog == true) {
 
        for (int i = 0; i < MAXSLICE; i++) {
            in1 >> t.den;
            in2 >> t.lit;
 
            // проверили, прочитались ли слова
 
            slice[i] = t;
        }
 
        for (int i = 0; i < MAXSLICE; i++)
            cout << i + 1 << ": " << slice[i].den << endl;
        
 
        cin >> answer;
 
 
        if (answer == 1 || answer == 2 || answer == 3
         || answer == 4 || answer == 5)
            cout << answer << ": " << slice[answer - 1].lit << endl;
 
        // переменная dialog отвечает за продолжение опроса
        // её можно выставлять и по файлам, и по ответу
        // сам ответ можно переделать в строковую форму 
 
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2010, 03:38
Привет! Вот еще темы с ответами:

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию - C++
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Написать программу- вводная информация в файле in.txt, выходная информация в out.txt - C++
Написать программу- вводная информация в файле in.txt, выходная информация в out.txt. Срочнооо..

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Хранение данных в txt файле - C++
Здравствуйте. У меня такая ситуация: Имеется диалог, на котором расположены кнопка, EditBox и ListCtrl. Надо следующее: я хочу чтобы...


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

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

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