std:: quoted
|
Определено в заголовочном файле
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/
quoted
(
const
CharT
*
s,
|
(1) | (начиная с C++14) |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
/*unspecified*/
quoted
(
const
std::
basic_string
<
CharT, Traits, Allocator
>
&
s,
|
(2) | (начиная с C++14) |
|
template
<
class
CharT,
class
Traits
>
/*unspecified*/
quoted
(
std::
basic_string_view
<
CharT, Traits
>
s,
|
(3) | (начиная с C++17) |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
/*unspecified*/
quoted
(
std::
basic_string
<
CharT, Traits, Allocator
>
&
s,
|
(4) | (начиная с C++14) |
Позволяет вставлять и извлекать строки в кавычках, такие как те, что встречаются в CSV или XML .
out
является выходным потоком с
char_type
равным
CharT
и, для перегрузок (2,3),
traits_type
равным
Traits
, ведет себя как
FormattedOutputFunction
, которая вставляет в
out
последовательность символов
seq
, сконструированную следующим образом:
seq
.
- Затем, если seq. size ( ) < out. width ( ) , добавляет out. width ( ) - seq. size ( ) копий символа заполнения out. fill ( ) либо в конец последовательности (если установлен ios_base :: left в out. flags ( ) ), либо в начало последовательности (во всех остальных случаях).
- Наконец, выводит каждый символ из результирующей последовательности как если бы вызывался out. rdbuf ( ) - > sputn ( seq, n ) , где n = std:: max ( out. width ( ) , seq. size ( ) ) и out. width ( 0 ) для отмены эффектов std::setw , если они присутствуют.
in
является входным потоком с
char_type
равным
CharT
и
traits_type
равным
Traits
, извлекает символы из
in
, используя
std::basic_istream::operator>>
, в соответствии со следующими правилами:
traits_type::eq
потока), то просто выполняется
in
>>
s
.
in
и добавляет их в
s
, за исключением случаев, когда извлекается
escape
символ — он игнорируется, и следующий символ добавляется в
s
. Извлечение прекращается, когда
!
in
==
true
или когда встречается неэкранированный
delim
символ.
Содержание |
Параметры
| s | - | строка для вставки или извлечения |
| delim | - | символ, используемый в качестве разделителя, по умолчанию " |
| escape | - | символ, используемый в качестве escape-символа, по умолчанию \ |
Возвращаемое значение
Возвращает объект неуказанного типа, так что описанное поведение имеет место.
Исключения
Выбрасывает std::ios_base::failure если operator >> или operator << выбрасывает исключение.
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_quoted_string_io
|
201304L
|
(C++14) |
std::quoted
|
Пример
#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(); }
Вывод:
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]
Смотрите также
|
(C++20)
|
сохраняет форматированное представление аргументов в новой строке
(шаблон функции) |