30#ifndef _GLIBCXX_QUOTED_STRING_H
31#define _GLIBCXX_QUOTED_STRING_H 1
33#pragma GCC system_header
35#if __cplusplus < 201103L
43 _GLIBCXX_BEGIN_NAMESPACE_VERSION
48 template<
typename _String,
typename _CharT>
53 "String type must be pointer or reference");
73 template<
typename _CharT,
typename _Traits>
80 for (
const _CharT* __c =
__str._M_string; *__c; ++__c)
82 if (*__c ==
__str._M_delim || *__c ==
__str._M_escape)
97 template<
typename _CharT,
typename _Traits,
typename _String>
100 const _Quoted_string<_String, _CharT>& __str)
103 __ostr << __str._M_delim;
104 for (
auto& __c : __str._M_string)
106 if (__c == __str._M_delim || __c == __str._M_escape)
107 __ostr << __str._M_escape;
110 __ostr << __str._M_delim;
112 return __os << __ostr.str();
119 template<
typename _CharT,
typename _Traits,
typename _Alloc>
129 if (__c !=
__str._M_delim)
135 __str._M_string.clear();
136 std::ios_base::fmtflags __flags
143 if (__c ==
__str._M_escape)
149 else if (__c ==
__str._M_delim)
151 __str._M_string += __c;
159 _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.
static const fmtflags skipws
Skips leading white space before certain input operations.
Struct for delimited strings.