powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / find_last_of что-то не работает как надо..
25 сообщений из 25, страница 1 из 1
find_last_of что-то не работает как надо..
    #34887578
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
find_last_of что-то не работает как надо..
    #34887770
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что он должен находить?
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887793
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhА что он должен находить?

возвращает индекс последнего вхождения символа ch в вызывающую строку, искать должен начиная с заданной позиции, а находит первое вхождение символа '+'
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887832
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 все правильно и работает. В описании нет строчки что поиск идет с конца в обратном порядке, а так как индекс вы задали = последнему символу в строке, то там только один символ "+" и есть.
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887846
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik AkhА что он должен находить?

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

Если он начанает искать с этой позиции и ищет последнее вхождение, значит как он должен двигаться?
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887847
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
find_last_of что-то не работает как надо..
    #34887854
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik

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

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

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

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

не понял..
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887902
Ivengo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, не посмотрел что такое len )))
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887908
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
find_last_of что-то не работает как надо..
    #34887918
Ivengo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте str_src = "12345+67890+23424"; и поставьте len = strlen(12345+67) может действительно поиск идет в обратном порядке... По первому коду вроде все правильно
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887930
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Tubrik

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

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

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

Это что-то сугубо противоположное Джосьютизу.
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34887960
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34888016
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, понятно, что мелкософт отдыхает со своими справочниками:
Код: 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
find_last_of что-то не работает как надо..
    #34888063
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34888110
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TubrikПочему? Разве ваши результа не отвечают фразе Index of the position at which the search is to finish ?

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

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

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

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

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

Как раз наоборот. Первое вхождение надо искать с начала, последнее с конца проходом в обратном порядке.
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34888376
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34888433
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
find_last_of что-то не работает как надо..
    #34888442
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikможно было бы ввести и 2 параметра (позиция начала поиска и конца поиска)

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

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

Круто! собственный терминатор.
...
Рейтинг: 0 / 0
find_last_of что-то не работает как надо..
    #34889237
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
25 сообщений из 25, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / find_last_of что-то не работает как надо..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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