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

Поиск теста - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Ulles
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 5
12.07.2011, 15:24     Поиск теста #1
Привет, можете плиз подсказать часть коды, где в c++ в файле file.txt ищется слово "disabled" и если оно есть тогда программы выдает cout << "Ok"; а если программа не нашла это слово, то выдает cout << "Error";.
Заранее спасибо.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
12.07.2011, 15:54     Поиск теста #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Ulles Посмотреть сообщение
Привет, можете плиз подсказать часть коды, где в c++ в файле file.txt ищется слово "disabled" и если оно есть тогда программы выдает cout << "Ok"; а если программа не нашла это слово, то выдает cout << "Error";.
Заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
   std::string s(
  (std::istreambuf_iterator<char>(
    *(std::auto_ptr<std::ifstream>(
      new std::ifstream("file.txt")
    )).get()
  )), 
  std::istreambuf_iterator<char>());
 if ( s.find( "disabled") != -1 ) cout << "Ok";
 else cout << "Error";
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
12.07.2011, 15:59     Поиск теста #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
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    ifstream file("1.txt");
    string a;
    bool flag=1;
    file>>a;
    while(flag && !file.eof())
    {
        if (a=="disabled")
         flag=0;
        file>>a;
    }
    if (flag)
     cerr<<"Error";
    else
     cout<<"OK";
 
}
Проверки и прочее сами добавите.

Добавлено через 3 минуты
An1ka, вы наверное слишком усложнили, у меня 4 ошибки при компиляции.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.07.2011, 16:49     Поиск теста #4
An1ka, лихо закручено!

Gepar, всё там нормально работает!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <fstream>
#include <iterator>
#include <algorithm>
    
int main(){
    std::string s((std::istreambuf_iterator<char>(*(std::auto_ptr<std::ifstream>(new std::ifstream("file.txt"))).get())), 
        std::istreambuf_iterator<char>());
    std::cout << ( s.find( "disabled") == std::string::npos ? "Error" : "Ok" ) << std::endl;
 
    return 0;
}
Поиск теста
Ulles
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 5
12.07.2011, 17:04  [ТС]     Поиск теста #5
Всем спасибо!
А как усложнить этот код, добавив это: если программа нашла в тексте "disabled1", выдать в консоль "11", если нашла в тексте "disabled2" - то выдать "22", "disabled3" - то выдать "3", а если ничего из вышеперечисленного - "Error"?
Спасибо.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
12.07.2011, 18:57     Поиск теста #6
Ulles,

Цитата Сообщение от Ulles Посмотреть сообщение
Всем спасибо!
А как усложнить этот код, добавив это: если программа нашла в тексте "disabled1", выдать в консоль "11", если нашла в тексте "disabled2" - то выдать "22", "disabled3" - то выдать "3", а если ничего из вышеперечисленного - "Error"?
Спасибо.
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 <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <boost/regex.hpp>
 
struct Func
{
    void operator() (std::string str)
    {
        std::string temp = str.substr(str.length() - 1);
        std::cout << temp + temp << std::endl;
    }
};
 
int main()
{
    std::string word("disabled");
    boost::regex reg(word + "[0-9]");
    std::string text("Some text about disabled1. One upon a time disabled2 go for a walk. The end of disabled8...");
    std::string::const_iterator start_it = text.begin();
    std::string::const_iterator end_it = text.end();
    boost::smatch results;
    std::vector <std::string> v_words;
    Func print;
 
    while (boost::regex_search(start_it, end_it, results, reg))
    {
        v_words.push_back(results[0]);
        start_it = results[0].second;
    }
    
    if (!v_words.empty())
        std::for_each(v_words.begin(), v_words.end(), print);
    else
        std::cout << "Error." << std::endl;
 
    return 0;
}
Ulles
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 5
12.07.2011, 19:06  [ТС]     Поиск теста #7
nameless, Спасибо, но у меня почему-то куча ошибок
Поиск теста

 Комментарий модератора 
Прикрепляйте картинки к сообщениям.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
12.07.2011, 19:12     Поиск теста #8
Ulles, я использовал boost::regex, входящая в состав набора библиотек boost (качать нужно http://www.boost.org/), для поиска подстроки в исходной строке, по заданному регулярному выражению..
Ulles
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 5
12.07.2011, 19:25  [ТС]     Поиск теста #9
Извини конечно, но есть возможность сделать это без boost`а?
Просто сейчас не имею возможность скачать
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.07.2011, 19:33     Поиск теста #10
Ulles, если у тебя 10-я студия или ты по линуксом то замени boost:: на std::, а
<boost/regex.hpp> на <regex>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2011, 19:37     Поиск теста
Еще ссылки по теме:

C++ Из теста
Очередное, из теста C++
Создание теста C++

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

Или воспользуйтесь поиском по форуму:
Ulles
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 5
12.07.2011, 19:37  [ТС]     Поиск теста #11
Не, я к сожалению пишу через eclipse.
просто со времен java привык
Yandex
Объявления
12.07.2011, 19:37     Поиск теста
Ответ Создать тему
Опции темы

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