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

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

Войти
Регистрация
Восстановить пароль
 
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
#1

работа с файлом - C++

24.08.2010, 20:32. Просмотров 420. Ответов 7
Метки нет (Все метки)

Как найти определённое слово в массиве? такого вида
[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 20:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос работа с файлом (C++):

Работа с файлом - C++
Файл не открывается для чтения..... программа создает алфавит для исходного текста....помогите пожалуйста..:( Уже все перепробовала.... ...

Работа с файлом - C++
ofstream file1("C:\\Users\\User\\Desktop\\jewelry.txt"); Ошибка 6 error C2146: синтаксическая ошибка: отсутствие ";" перед...

Работа с файлом - C++
#include <iostream> #include <string> using namespace std; struct STUDENT // структура STUDENT { string name; ...

Работа с файлом в С++ - C++
Всем привет! Я никогда не работал с С++, но возникла необходимость чтения-записи в файл на С++. А если еще точнее Embedded C++. Не...

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

Работа с файлом - C++
Помогите если не затруднит. Есть текстовый файл(примерно такой): A asdada qweqw A ijiijij nvbjk rtrt A

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.08.2010, 20:51 #2
это массив? или это то, что нужно найти?
0
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
24.08.2010, 21:11  [ТС] #3
Цитата Сообщение от Danvern Посмотреть сообщение
[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/
это массив.
google- вот это слово нужно в нём найти.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.08.2010, 21:14 #4
Danvern, Разбиваем строку... Разделители допустим " ./"... Проверяем каждое слово на совпадение... Если совпало одно что-то делаем, если не совпало продолжаем искать..
0
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.08.2010, 21:14 #5
т.е. имя домена?
урлы могут быть разными?
0
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
24.08.2010, 21:21  [ТС] #6
ну да.
помогите хотя бы вот это выцепить http://google.com/
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.08.2010, 21:27 #7
Danvern,
Выцепляет google
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
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
   std::string Str="[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/";
   std::string Delim=" ./";
   for(std::string::iterator It=Str.begin(); It!=Str.end(); ++It)
   {
      if(Delim.find(*It)!=std::string::npos)
         *It=' ';
   }
   std::istringstream buf(Str);
   std::string string;
   std::string CompStr="google";
   while(buf)
   {
      buf>>string;
      if(string==CompStr)
         std::cout<<string<<'\n';
   }
   return 0;
}
Цепляет http://google.com/
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
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
   std::string Str="[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/";
   std::string Delim=" ";
   for(std::string::iterator It=Str.begin(); It!=Str.end(); ++It)
   {
      if(Delim.find(*It)!=std::string::npos)
         *It=' ';
   }
   std::istringstream buf(Str);
   std::string string;
   std::string CompStr="http://google.com/";
   while(buf)
   {
      buf>>string;
      if(string==CompStr)
      {
         std::cout<<string<<'\n';
         break;
      }
   }
   return 0;
}
2
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
25.08.2010, 00:09 #8
Danvern, поправьте, если ошибаюсь: нужно читать строки из лог-файла, выдёргивать из них последнюю часть (содержащую запрошенный хост) и сохранять куда-то найденное? Или всё-таки google искать?
Если нужно проверить, содержит ли строка google.com, так это просто
C
1
2
3
4
...
char buf[BUFSIZ];
...
printf("%s\n", strstr(buf, "google.com") ? "yes" : "no");
C++
1
2
3
4
...
std::string buf;
...
std::cout << ( buf.find("google.com") == std::string::npos ? "niht" : "ya-ya") << std::endl;
Если же всё-таки нужна последняя часть из строки, то вот, правда, на С
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char * last_word(const char * str){
    char * p;
    
    if ( ( p = strrchr(str, ' ') ) == NULL ){
        fprintf(stderr, "Wrong string!\n");
        return NULL;
    }
    return ++p;
}
 
int main(void){
    char *rows[] = {
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/",
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://shmoogle.com/",
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://yandex.ru/",
        NULL
    };
    char ** hosts, ** row, * host;
    size_t count, i;
    
    hosts = NULL;
    count = 0;
    
    for ( row = rows; *row; ++row ){
        if ( ( host = last_word(*row) ) == NULL ){
            fprintf(stderr, "Error while parsing row #%d\n", count + 1);
            exit(EXIT_FAILURE);
        }
        if ( ( hosts = (char**)realloc(hosts, sizeof(char*) * (count + 1)) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
        if ( ( hosts[count++] = strdup(host) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
    }
    
    printf("%d hosts found:\n", count);
    for ( i = 0; i < count; ++i )
        printf("%s\n", hosts[i]);
    
    for ( i = 0; i < count; ++i )
        free(hosts[i]);
    free(hosts);
    exit(EXIT_SUCCESS);
}
Откуда-нибудь из середины строки вынуть часть было бы сложнее, но не на много...
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2010, 00:09
Привет! Вот еще темы с ответами:

Работа с файлом - C++
Ранее уже выкладывал код. Поизменял. Поиск разработал. Но ни фига не работает)). Помогите найти. пожалуйста ошибку. В майне цикл не...

C++. Работа с файлом - C++
Всем привет!!Написала код!!Нужно чтобы текст из файла переводился в Морзе!По отдельности они работают!А как соединить не знаю(((Помогите...

Работа с файлом - C++
char *FileName =&quot;123.txt&quot;; int h=fileno(fopen(FileName,&quot;r+&quot;)); FileName=&quot;\0&quot;; Как мне теперь используя только h работать с файлом?...

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


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

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

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