std:: quoted
Defined in header
<iomanip>
|
||
template
<
class
CharT
>
/*unspecified*/
quoted
(
const
CharT
*
s,
|
(1) | (since C++14) |
template
<
class
CharT,
class
Traits,
class
Allocator
>
/*unspecified*/
quoted
(
const
std::
basic_string
<
CharT, Traits, Allocator
>
&
s,
|
(2) | (since C++14) |
template
<
class
CharT,
class
Traits
>
/*unspecified*/
quoted
(
std::
basic_string_view
<
CharT, Traits
>
s,
|
(3) | (since C++17) |
template
<
class
CharT,
class
Traits,
class
Allocator
>
/*unspecified*/
quoted
(
std::
basic_string
<
CharT, Traits, Allocator
>
&
s,
|
(4) | (since C++14) |
Allows insertion and extraction of quoted strings, such as the ones found in CSV or XML .
out
is an output stream with
char_type
equal to
CharT
and, for overloads (2,3),
traits_type
equal to
Traits
, behaves as a
FormattedOutputFunction
, which inserts into
out
a sequence of characters
seq
constructed as follows:
seq
once more.
- Then, if seq. size ( ) < out. width ( ) , adds out. width ( ) - seq. size ( ) copies of the fill character out. fill ( ) either at the end of the sequence (if ios_base :: left is set in out. flags ( ) ) or at the beginning of the sequence (in all other cases).
- Finally, outputs each character from the resulting sequence as if by calling out. rdbuf ( ) - > sputn ( seq, n ) , where n = std:: max ( out. width ( ) , seq. size ( ) ) and out. width ( 0 ) to cancel the effects of std::setw , if any.
in
is an input stream with
char_type
equal to
CharT
and
traits_type
equal to
Traits
, extracts characters from
in
, using
std::basic_istream::operator>>
, according to the following rules:
traits_type::eq
), then simply performs
in
>>
s
.
in
and appends them to
s
, except that whenever an
escape
character is extracted, it is ignored and the next character is appended to
s
. Extraction stops when
!
in
==
true
or when an unescaped
delim
character is found.
Parameters
s | - | the string to insert or extract |
delim | - | the character to use as the delimiter, defaults to " |
escape | - | the character to use as the escape character, defaults to \ |
Return value
Returns an object of unspecified type such that the described behavior takes place.
Exceptions
Throws std::ios_base::failure if operator >> or operator << throws.
Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_quoted_string_io
|
201304L | (C++14) |
std::quoted
|
Example
#include <iomanip> #include <iostream> #include <sstream> void default_delimiter() { const std::string in = "std::quoted() quotes this string and embedded \"quotes\" too"; std::stringstream ss; ss << std::quoted(in); std::string out; ss >> std::quoted(out); std::cout << "Default delimiter case:\n" "read in [" << in << "]\n" "stored as [" << ss.str() << "]\n" "written out [" << out << "]\n\n"; } void custom_delimiter() { const char delim{'$'}; const char escape{'%'}; const std::string in = "std::quoted() quotes this string and embedded $quotes$ $too"; std::stringstream ss; ss << std::quoted(in, delim, escape); std::string out; ss >> std::quoted(out, delim, escape); std::cout << "Custom delimiter case:\n" "read in [" << in << "]\n" "stored as [" << ss.str() << "]\n" "written out [" << out << "]\n\n"; } int main() { default_delimiter(); custom_delimiter(); }
Output:
Default delimiter case: read in [std::quoted() quotes this string and embedded "quotes" too] stored as ["std::quoted() quotes this string and embedded \"quotes\" too"] written out [std::quoted() quotes this string and embedded "quotes" too] Custom delimiter case: read in [std::quoted() quotes this string and embedded $quotes$ $too] stored as [$std::quoted() quotes this string and embedded %$quotes%$ %$too$] written out [std::quoted() quotes this string and embedded $quotes$ $too]
See also
(C++20)
|
stores formatted representation of the arguments in a new string
(function template) |