Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / find_last_of что-то не работает как надо.. / 25 сообщений из 25, страница 1 из 1
23.10.2007, 13:05:06
    #34887578
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	typedef	std::string::size_type	size_type;
	const size_type	npos = std::string::npos;

	std::string			str_src = "12345+67890+";
	const size_t		len = strlen("12345+");

	std::cout << std::endl << "len = " << len << std::endl;

	// find_last_of(CharType ch, size_type indx) 
	// - возвращает индекс последнего вхождения символа ch в вызывающую построку,
	// поиск начинается с позиции indx ..
	size_type			pos = str_src.find_last_of('+', len);	

	std::cout << std::endl << "pos = " << pos << std::endl;

упорно находит первое вхождение '+'
...
Рейтинг: 0 / 0
23.10.2007, 13:37:37
    #34887770
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
А что он должен находить?
...
Рейтинг: 0 / 0
23.10.2007, 13:42:58
    #34887793
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
AkhА что он должен находить?

возвращает индекс последнего вхождения символа ch в вызывающую строку, искать должен начиная с заданной позиции, а находит первое вхождение символа '+'
...
Рейтинг: 0 / 0
23.10.2007, 13:49:29
    #34887832
Ivengo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrik
Код: plaintext
1.
2.
3.
4.
	// find_last_of(CharType ch, size_type indx) 
	// - возвращает индекс последнего вхождения символа ch в вызывающую построку,
	// поиск начинается с позиции indx ..
	size_type			pos = str_src.find_last_of('+', len);	

упорно находит первое вхождение '+'
Судя по описанию find_last_of все правильно и работает. В описании нет строчки что поиск идет с конца в обратном порядке, а так как индекс вы задали = последнему символу в строке, то там только один символ "+" и есть.
...
Рейтинг: 0 / 0
23.10.2007, 13:51:30
    #34887846
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrik AkhА что он должен находить?

возвращает индекс последнего вхождения символа ch в вызывающую строку, искать должен начиная с заданной позиции, а находит первое вхождение символа '+'

Если он начанает искать с этой позиции и ищет последнее вхождение, значит как он должен двигаться?
...
Рейтинг: 0 / 0
23.10.2007, 13:51:43
    #34887847
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Ivengo Tubrik
Код: plaintext
1.
2.
3.
4.
	// find_last_of(CharType ch, size_type indx) 
	// - возвращает индекс последнего вхождения символа ch в вызывающую построку,
	// поиск начинается с позиции indx ..
	size_type			pos = str_src.find_last_of('+', len);	

упорно находит первое вхождение '+'
Судя по описанию find_last_of все правильно и работает. В описании нет строчки что поиск идет с конца в обратном порядке, а так как индекс вы задали = последнему символу в строке, то там только один символ "+" и есть.

я не говорил, что поиск происходит в обратном порядке, если поставить len + 1, все равно находит первое вхождение
...
Рейтинг: 0 / 0
23.10.2007, 13:53:04
    #34887854
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrik

я не говорил, что поиск происходит в обратном порядке, если поставить len + 1, все равно находит первое вхождение

поставь len от str_src.
...
Рейтинг: 0 / 0
23.10.2007, 14:00:56
    #34887893
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Akh Tubrik

я не говорил, что поиск происходит в обратном порядке, если поставить len + 1, все равно находит первое вхождение

поставь len от str_src.

не понял..
...
Рейтинг: 0 / 0
23.10.2007, 14:02:40
    #34887902
Ivengo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
блин, не посмотрел что такое len )))
...
Рейтинг: 0 / 0
23.10.2007, 14:03:24
    #34887908
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrik
Код: plaintext
1.
2.
3.
	// find_last_of(CharType ch, size_type indx) 
	// - возвращает индекс последнего вхождения символа ch в вызывающую построку,
	// поиск начинается с позиции indx ..

упорно находит первое вхождение '+'

А разве не

size_type find_last_of(value_type _Ch, size_type _Off = npos)

Parameters
_Off
Index of the position at which the search is to finish.
?
...
Рейтинг: 0 / 0
23.10.2007, 14:06:19
    #34887918
Ivengo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Попробуйте str_src = "12345+67890+23424"; и поставьте len = strlen(12345+67) может действительно поиск идет в обратном порядке... По первому коду вроде все правильно
...
Рейтинг: 0 / 0
23.10.2007, 14:07:59
    #34887930
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Akh Tubrik

я не говорил, что поиск происходит в обратном порядке, если поставить len + 1, все равно находит первое вхождение

поставь len от str_src.

Код: plaintext
1.
len = str_src.length();
...
Рейтинг: 0 / 0
23.10.2007, 14:08:40
    #34887933
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
млин, опять Шилдт свинью подложил, или переводчики..
...
Рейтинг: 0 / 0
23.10.2007, 14:09:26
    #34887938
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
ZrenBy
Parameters
_Off
Index of the position at which the search is to finish.
?

Это что-то сугубо противоположное Джосьютизу.
...
Рейтинг: 0 / 0
23.10.2007, 14:12:35
    #34887960
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
...
Рейтинг: 0 / 0
23.10.2007, 14:21:48
    #34888016
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
По моему, понятно, что мелкософт отдыхает со своими справочниками:
Код: plaintext
1.
2.
3.
4.
5.
6.
    string s = "123a123b123x1";

    for (unsigned int i= 0  ; i<s.length() ; ++i) {
        cout << "idx=" << i << ": found on " << s.find_last_of('1', i) << endl;
    };


автор
idx=0: found on 0
idx=1: found on 0
idx=2: found on 0
idx=3: found on 0
idx=4: found on 4
idx=5: found on 4
idx=6: found on 4
idx=7: found on 4
idx=8: found on 8
idx=9: found on 8
idx=10: found on 8
idx=11: found on 8
idx=12: found on 12
...
Рейтинг: 0 / 0
23.10.2007, 14:31:40
    #34888063
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Почему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?
...
Рейтинг: 0 / 0
23.10.2007, 14:38:50
    #34888110
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
TubrikПочему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?

Граздо удобнее с этой позиции начинать поиск.
...
Рейтинг: 0 / 0
23.10.2007, 14:45:02
    #34888142
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Akh TubrikПочему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?

Граздо удобнее с этой позиции начинать поиск.

Для поиска первого вхождения да, но для последнего малополезно будет...
...
Рейтинг: 0 / 0
23.10.2007, 14:55:50
    #34888187
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
ZrenBy Akh TubrikПочему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?

Граздо удобнее с этой позиции начинать поиск.

Для поиска первого вхождения да, но для последнего малополезно будет...

Как раз наоборот. Первое вхождение надо искать с начала, последнее с конца проходом в обратном порядке.
...
Рейтинг: 0 / 0
23.10.2007, 15:41:58
    #34888376
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
можно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)
...
Рейтинг: 0 / 0
23.10.2007, 15:54:32
    #34888433
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrikможно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)

Собстна, схематично, и ничего удивительного:

Код: plaintext
1.
2.
3.
4.
5.
for (char const* p=c_str()+idx ; p!=c_str() ; --p) {
    if ((*p)==symbol) {
            return p-c_str();
   }
}
...
Рейтинг: 0 / 0
23.10.2007, 15:56:10
    #34888442
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Tubrikможно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)

Тьфу, блин, прочитал "привести 2 примера".
...
Рейтинг: 0 / 0
23.10.2007, 16:36:19
    #34888594
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
Akh Tubrikможно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)

Тьфу, блин, прочитал "привести 2 примера".

Круто! собственный терминатор.
...
Рейтинг: 0 / 0
23.10.2007, 19:42:30
    #34889237
teras
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
find_last_of что-то не работает как надо..
ZrenBy wrote:

> А разве не
>
> size_type find_last_of(value_type _Ch, size_type _Off = npos)
>
> Parameters
> _Off
> Index of the position at which *the search is to finish.*
> ?

А сделано у них, тем не менее, правильно...

21.3.6.4 basic_string::find_last_of [lib.string::find.last.of]
size_type
find_last_of (const basic_string <charT,traits,Allocator>& str,
size_type pos = npos) const;

1) Effects: Determines the highest position xpos, if possible,
such that both of the following conditions obtain:
xpos <= pos and xpos < size();
— traits::eq(at(xpos), str .at(I)) for some element I of the string
controlled by str.
2) Returns: xpos if the function can determine such a value for xpos.
Otherwise, returns npos.
3) Remarks: Uses traits::eq().
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / find_last_of что-то не работает как надо.. / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]