30#ifndef _GLIBCXX_QUOTED_STRING_H
31#define _GLIBCXX_QUOTED_STRING_H 1
33#pragma GCC system_header
35#if __cplusplus < 201103L
42_GLIBCXX_BEGIN_NAMESPACE_VERSION
48 template<
typename _String,
typename _CharT>
53 "String type must be pointer or reference");
67#if __cplusplus >= 201703L
68 template<
typename _CharT,
typename _Traits>
77 operator=(_Quoted_string&) =
delete;
90 template<
typename _CharT,
typename _Traits>
93 const _Quoted_string<const _CharT*, _CharT>& __str)
98 __ostr << __str._M_delim;
99 for (
const _CharT* __c = __str._M_string; *__c; ++__c)
101 if (*__c == __str._M_delim || *__c == __str._M_escape)
102 __ostr << __str._M_escape;
105 __ostr << __str._M_delim;
107 return __os << __ostr.str();
115 template<
typename _CharT,
typename _Traits,
typename _String>
118 const _Quoted_string<_String, _CharT>& __str)
123 __ostr << __str._M_delim;
124 for (
auto __c : __str._M_string)
126 if (__c == __str._M_delim || __c == __str._M_escape)
127 __ostr << __str._M_escape;
130 __ostr << __str._M_delim;
132 return __os << __ostr.str();
141 template<
typename _CharT,
typename _Traits,
typename _Alloc>
151 if (__c !=
__str._M_delim)
157 __str._M_string.clear();
158 std::ios_base::fmtflags __flags
165 if (__c ==
__str._M_escape)
171 else if (__c ==
__str._M_delim)
173 __str._M_string += __c;
182_GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, const _Quoted_string< basic_string< _CharT, _Traits, _Alloc > &, _CharT > &__str)
Extractor for delimited strings. The left and right delimiters can be different.
std::basic_ostream< _CharT, _Traits > & operator<<(std::basic_ostream< _CharT, _Traits > &__os, const _Quoted_string< const _CharT *, _CharT > &__str)
Inserter for quoted strings.
A non-owning reference to a string.
static const fmtflags skipws
Skips leading white space before certain input operations.
Struct for delimited strings.