[ Note: Манипуляторы с кавычками обеспечивают вставку и извлечение строк в кавычках (например, в форматах XML и CSV). Цитированные манипуляторы полезны для обеспечения того, чтобы содержимое строки со встроенными пробелами оставалось неизменным, если оно вставлено и затем извлечено с помощью потокового ввода-вывода. ] — end note
template <class charT>
unspecified quoted(const charT* s, charT delim = charT('"'), charT escape = charT('\\'));
template <class charT, class traits, class Allocator>
unspecified quoted(const basic_string<charT, traits, Allocator>& s,
charT delim = charT('"'), charT escape = charT('\\'));
template <class charT, class traits>
unspecified quoted(basic_string_view<charT, traits> s,
charT delim = charT('"'), charT escape = charT('\\'));
Returns: Объект неопределенного типа, такой что if out является экземпляром basic_ostream с типом члена, char_type таким же, как charT и с типом члена traits_type, который во второй и третьей формах совпадает с traits, тогда выражение out << quoted(s, delim, escape) ведет себя как a formatted output function of out. Это формирует последовательность символов seq, изначально состоящую из следующих элементов:
delim.
Каждый персонаж в s. Если выводимый символ равен escape или delim, как определено traits_type::eq, первый вывод escape.
delim.
Позвольте x быть количество элементов первоначально в seq. Затем определяется заполнение, seq как описано в [ostream.formatted.reqmts], seq вставляется, как если бы при вызове out.rdbuf()->sputn(seq, n), где n больше из out.width() и x, и out.width(0) вызывается. Выражение out << quoted(s, delim, escape) должно иметь тип basic_ostream<charT, traits>& и значение out.
template <class charT, class traits, class Allocator>
unspecified quoted(basic_string<charT, traits, Allocator>& s,
charT delim = charT('"'), charT escape = charT('\\'));
Returns: Объект неопределенного типа, такой что:
Если in это экземпляр basic_istream с типами членов char_type и traits_type то же самое, что charT и traits, соответственно, тогда выражение in >> quoted(s, delim, escape) ведет себя так, как если бы оно извлекало следующие символы из in using operator>>(basic_istream<charT, traits>&, charT&) ([istream.extractors]), которое может throw ios_base::failure ([ios::failure]):
Если первый извлеченный символ равен delim, как определено traits_type::eq, то:
Снимите skipws флаг.
s.clear()
Пока не будет delim достигнут неэкранированный символ или !in, извлеките символы из in и добавьте их s, за исключением того, что если escape достигнут, игнорируйте его и добавляйте следующий символ к s.
Отбросьте последний delim символ.
Восстановите skipws исходное значение флага.
В противном случае in >> s.
Если out - это экземпляр basic_ostream с типами членов char_type и traits_type то же самое, что charT и и traits, соответственно, тогда выражение out << quoted(s, delim, escape) ведет себя так, как указано для const basic_string<charT, traits, Allocator>& перегрузки quoted функции.
Выражение in >> quoted(s, delim, escape) должно иметь тип basic_istream<charT, traits>& и значение in. Выражение out << quoted(s, delim, escape) должно иметь тип basic_ostream<charT, traits>& и значение out.