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

Не работает программа - C++

Восстановить пароль Регистрация
 
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
25.08.2012, 23:24     Не работает программа #1
В идеале, она должна выводить "Daniil", но она даже не компилится, не подскажете в чем дело?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <string>
 
 
int main()
{
    std:: string s ("Hello, My name is Daniil"), tmp ("");
    tmp.resize (100);
    std::copy (std::find (s.begin(), s.end(), "Daniil"), std::find (s.begin(), s.end(), "Daniil") + 7, tmp.begin());
    std:: cout << tmp << "\n";
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
25.08.2012, 23:27     Не работает программа #2
Dani, std::string::iterator указывает на символ, а вы пытаетесь его со строкой сравнить.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
25.08.2012, 23:31  [ТС]     Не работает программа #3
soon, можете подробнее. Где именно я его сравниваю?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
25.08.2012, 23:32     Не работает программа #4
Dani, в find же.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
25.08.2012, 23:38  [ТС]     Не работает программа #5
soon, ... все равно понять не могу.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.08.2012, 23:43     Не работает программа #6
Dani, Это элементарно же. http://cplusplus.com/reference/algorithm/find/

Поведение примерно эквивалентно

C++
1
2
3
4
5
6
template<class InputIterator, class T>
  InputIterator find ( InputIterator first, InputIterator last, const T& value )
  {
    for ( ;first!=last; first++) if ( *first==value ) break;
    return first;
  }
Собственно *first - char, а value - const char[7]. Как интересно организовать сие сравнение?
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
25.08.2012, 23:44     Не работает программа #7
Dani, std::find перебирает элементы переданной ему последовательности один за другим, и сравнивает каждый из них с третьим параметром. Элементами строки являются символы, а третьим параметром у вас передаётся строка. Т.е. std::find не подходит для поиска подстроки, если хотите использовать алгоритмы, используйте std::search.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
25.08.2012, 23:47     Не работает программа #8
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main()
{
    std::string s("Hello, My name is Daniil"), tmp;
    // tmp.resize (100);
    tmp = s.substr(s.find("Daniil"), 7);
    std::cout << tmp << std::endl;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2012, 23:52     Не работает программа
Еще ссылки по теме:

C++ программа не работает =(
Не работает программа C++
Не работает программа C++

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

Или воспользуйтесь поиском по форуму:
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
25.08.2012, 23:52  [ТС]     Не работает программа #9
Все, разобрался. Спасибо. Туплю.
Yandex
Объявления
25.08.2012, 23:52     Не работает программа
Ответ Создать тему
Опции темы

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