GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::quoted(3) C++ Standard Libary std::quoted(3)

std::quoted - std::quoted


Defined in header <iomanip>
template< class CharT >


/*unspecified*/ quoted( const CharT* s, (1) (since C++14)


CharT delim=CharT('"'), CharT escape=CharT('\\') );
template< class CharT, class Traits, class Allocator >


/*unspecified*/ quoted( const std::basic_string<CharT, Traits, (2) (since C++14)
Allocator>& s,


CharT delim=CharT('"'), CharT escape=CharT('\\') );
template< class CharT, class Traits>


/*unspecified*/ quoted( std::basic_string_view<CharT, Traits> s, (3) (since C++17)


CharT delim=CharT('"'), CharT escape=CharT('\\') );
template< class CharT, class Traits, class Allocator >


/*unspecified*/ quoted( std::basic_string<CharT, Traits, (4) (since C++14)
Allocator>& s,


CharT delim=CharT('"'), CharT escape=CharT('\\') );


Allows insertion and extraction of quoted strings, such as the ones found in CSV or


When used in an expression out << quoted(s, delim, escape), where out is an output
stream with char_type equal to CharT and, for overloads 2-4, traits_type equal to
Traits, behaves as a FormattedOutputFunction, which inserts into out a sequence of
characters seq constructed as follows:


a) First, the character delim is added to the sequence
b) Then every character from s, except if the next character to output equals delim
or equals escape (as determined by the stream's traits_type::eq), then first appends
an extra copy of escape
c) In the end, delim is appended to 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.


4) When used in an expression in >> quoted(s, delim, escape), where 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:
a) If the first character extracted does not equal delim (as determined by the
stream's traits_type::eq), then simply performs in >> s.
b) Otherwise (if the first character is the delimiter):
1) Turns off the skipws flag on the input stream
2) Empties the destination string by calling s.clear()
3) Extracts characters from 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.
4) Discards the final (unescaped) delim character.
5) Restores the skipws flag on the input stream to its original value.


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 \


Returns an object of unspecified type such that the described behavior takes place.


Throws std::ios_base::failure if operator>> or operator<< throws.


Feature-test macro: __cpp_lib_quoted_string_io

// Run this code


#include <iostream>
#include <iomanip>
#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();
}


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]

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.