Init
This commit is contained in:
123
cppdraft/quoted/manip.md
Normal file
123
cppdraft/quoted/manip.md
Normal file
@@ -0,0 +1,123 @@
|
||||
[quoted.manip]
|
||||
|
||||
# 31 Input/output library [[input.output]](./#input.output)
|
||||
|
||||
## 31.7 Formatting and manipulators [[iostream.format]](iostream.format#quoted.manip)
|
||||
|
||||
### 31.7.9 Quoted manipulators [quoted.manip]
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7614)
|
||||
|
||||
[*Note [1](#note-1)*:
|
||||
|
||||
Quoted manipulators provide string insertion and extraction of quoted strings (for example, XML and CSV formats)[.](#1.sentence-1)
|
||||
|
||||
Quoted manipulators are useful in ensuring that the content of a string with embedded spaces remains unchanged if inserted and then extracted via stream I/O[.](#1.sentence-2)
|
||||
|
||||
â *end note*]
|
||||
|
||||
[ð](#lib:quoted)
|
||||
|
||||
`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('\\'));
|
||||
`
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7632)
|
||||
|
||||
*Returns*: An object of unspecified type such that if out is an instance
|
||||
of basic_ostream with member type char_type the same ascharT and with member type traits_type, which in the second and third
|
||||
forms is the same as traits, then the expressionout << quoted(s, delim, escape) behaves as a [formatted output function](ostream.formatted.reqmts "31.7.6.3.1 Common requirements [ostream.formatted.reqmts]") of out[.](#2.sentence-1)
|
||||
|
||||
This forms a character sequence seq, initially
|
||||
consisting of the following elements:
|
||||
|
||||
- [(2.1)](#2.1)
|
||||
|
||||
delim[.](#2.1.sentence-1)
|
||||
|
||||
- [(2.2)](#2.2)
|
||||
|
||||
Each character in s[.](#2.2.sentence-1)
|
||||
If the character to be output is equal toescape or delim, as determined by traits_type::eq, first
|
||||
output escape[.](#2.2.sentence-2)
|
||||
|
||||
- [(2.3)](#2.3)
|
||||
|
||||
delim[.](#2.3.sentence-1)
|
||||
|
||||
Let x be the number of elements initially in seq[.](#2.sentence-3)
|
||||
|
||||
Then padding is determined for seq as described
|
||||
in [[ostream.formatted.reqmts]](ostream.formatted.reqmts "31.7.6.3.1 Common requirements"), seq is inserted as if by callingout.rdbuf()->sputn(seq, n), where n is the larger ofout.width() and x, and out.width(0) is called[.](#2.sentence-4)
|
||||
|
||||
The expression out << quoted(s, delim, escape) has typebasic_ostream<charT, traits>& and value out[.](#2.sentence-5)
|
||||
|
||||
[ð](#lib:quoted_)
|
||||
|
||||
`template<class charT, class traits, class Allocator>
|
||||
unspecified quoted(basic_string<charT, traits, Allocator>& s,
|
||||
charT delim = charT('"'), charT escape = charT('\\'));
|
||||
`
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7666)
|
||||
|
||||
*Returns*: An object of unspecified type such that:
|
||||
|
||||
- [(3.1)](#3.1)
|
||||
|
||||
If in is an instance of basic_istream with member typeschar_type and traits_type the same as charT and traits, respectively, then the expressionin >> quoted(s, delim, escape) behaves as if it extracts the following
|
||||
characters from in usingoperator>>(basic_istream<charT, traits>&, charT&) ([[istream.extractors]](istream.extractors "31.7.5.3.3 basic_istream::operator>>"))
|
||||
which may throw ios_base::failure ([[ios.failure]](ios.failure "31.5.2.2.1 Class ios_base::failure")):
|
||||
* [(3.1.1)](#3.1.1)
|
||||
|
||||
If the first character extracted is equal to delim, as
|
||||
determined by traits_type::eq, then:
|
||||
+
|
||||
[(3.1.1.1)](#3.1.1.1)
|
||||
Turn off the skipws flag[.](#3.1.1.1.sentence-1)
|
||||
|
||||
+
|
||||
[(3.1.1.2)](#3.1.1.2)
|
||||
s.clear()
|
||||
|
||||
+
|
||||
[(3.1.1.3)](#3.1.1.3)
|
||||
Until an unescaped delim character is reached or !in,
|
||||
extract characters from in and append them to s, except that
|
||||
if an escape is reached, ignore it and append the next character tos[.](#3.1.1.3.sentence-1)
|
||||
|
||||
+
|
||||
[(3.1.1.4)](#3.1.1.4)
|
||||
Discard the final delim character[.](#3.1.1.4.sentence-1)
|
||||
|
||||
+
|
||||
[(3.1.1.5)](#3.1.1.5)
|
||||
Restore the skipws flag to its original value[.](#3.1.1.5.sentence-1)
|
||||
|
||||
* [(3.1.2)](#3.1.2)
|
||||
|
||||
Otherwise, in >> s[.](#3.1.2.sentence-1)
|
||||
|
||||
- [(3.2)](#3.2)
|
||||
|
||||
If out is an instance of basic_ostream with member typeschar_type and traits_type the same as charT andtraits, respectively, then the expressionout << quoted(s, delim, escape) behaves as specified for theconst basic_string<charT, traits, Allocator>& overload of thequoted function[.](#3.2.sentence-1)
|
||||
|
||||
- [(3.3)](#3.3)
|
||||
|
||||
The expression in >> quoted(s, delim, escape) has typebasic_istream<charT, traits>& and value in[.](#3.3.sentence-1)
|
||||
|
||||
- [(3.4)](#3.4)
|
||||
|
||||
The expression out << quoted(s, delim, escape) has typebasic_ostream<charT, traits>& and value out[.](#3.4.sentence-1)
|
||||
Reference in New Issue
Block a user