точная механика istream::operator>> к строке

#c #istream

#c #istream

Вопрос:

Я просто не вижу этого:

 std::istringstream stream(somestring);

string temp;
stream >> temp;
  

В последней строке какая именно функция вызывается? Я не могу найти его в списке на >/» rel=»nofollow»>cplusplus.com. Спасибо!

Комментарии:

1. std::istringstream и string ? Где std:: в последнем?

2. Вы имеете в виду std:: или a .c_str() ? Последнее не требуется в c 0x.

3. Ах, вы должны были упомянуть об этом. 🙂

Ответ №1:

Если не изменяет память, это перегрузка функции, не являющейся членом — имейте подпись что-то вроде:

 std::istream amp;operator>>(std::istream amp;is, std::string amp;s);
  

(На данный момент я опустил тот факт, что оба istream и string действительно являются typedefs экземпляров шаблонов).

Комментарии:

1. Черт возьми, только что нашел это здесь: >/» rel=»nofollow noreferrer»> cplusplus.com/reference/string/operator>> Думаю, этого нет в списке, потому что оно просто не объявлено в <istream> заголовке… Хотя спасибо, вы странно указали мне правильное направление 🙂

Ответ №2:

Вы имеете в виду istreamamp; operator>> (istreamamp; is, stringamp; str); ?

(на >/» rel=»nofollow»>cplusplus.com)