Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > метод rfind объекта string


Автор: AlanG 10.6.2006, 12:57
Всем доброго времени суток smile 
Я извиняюсь за глупый вопрос, но я в небольших непонятках.
Откуда начинается считывание у метода rfind объекта string, с начала строки или с конца?
При этом индекс откуда начинается считывания не указан.

Код

 void main(){
int i;
string s1="Холодная голова, чистые руки, горячее сердце";
string s2;

  i=s1.rfind(',');
  if(i!=string::npos)
  s2.assing(s1, i, s1.size());
  cout<<s2;  
 }

Вывод: , горячее сердце 

Автор: Daevaorn 10.6.2006, 13:28
Цитата(AlanG @  10.6.2006,  13:57 Найти цитируемый пост)
Откуда начинается считывание у метода rfind объекта string, с начала строки или с конца?

Ищет с конца. Номер элемента с начала.

Код

 s2.assing(s1, i, s1.size());

Ты сам ответил на свой вопрос.

Добавлено @ 13:30 
ISO/IEC 14882:2003(E)
Цитата

[lib.string::rfind] 21.3.6.2 basic_string::rfind
size_type rfind(const basic_string<charT,traits,Allocator>& str,
size_type pos = npos) const;
Effects: Determines the highest position xpos, if possible, such that both of the following conditions
obtain:
— xpos <= posandxpos + str.size() <= size();
— at(xpos+I) == str.at(I) for all elementsI of the string controlled bystr.
Returns: xposif the function can determine such a value forxpos. Otherwise, returnsnpos.
Notes: Usestraits::eq().

 

Автор: AlanG 10.6.2006, 13:39
Цитата

Ты сам ответил на свой вопрос.  

Ну вобщем да, просто читаю на досуге Шилдта, когда от Страуструпа отдыхаю  smile , и если чесно, там (у Шилдта) слегка корявенько написано smile, а может книга ращитана для уже продвинутых, и я просто чегото недопонимаю.  

Автор: Earnest 12.6.2006, 12:19
Может, перевод корявый. "r" в STL означает reverse: rbegin, rend, rfind, ... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)